Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
995 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Sellection de lignes excel sur condition

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Sellection de lignes excel sur condition

n°1521708
Dupuis_fre​e
Posté le 28-02-2007 à 14:26:54  profilanswer
 

Bonjour,
 
J'ai un fichier excel de plus de 13000 lignes (2 colonnes) et j'aimerais sélectionner uniquement les lignes dont les valeurs de la colonne 1 sont des entiers pour les copier (les lignes) dans une nouvelle feuille.
Je n'est aucune notion de programmation VB, alors si quelqu'un(e) pouvait m'aider....
Merci.
 
GeDu

mood
Publicité
Posté le 28-02-2007 à 14:26:54  profilanswer
 

n°1521726
jpcheck
Pioupiou
Posté le 28-02-2007 à 14:43:12  profilanswer
 

tu peux placer un bouton sur ta feuille ?  
dans ce cas en cliquant dessus tu peux lancer une procédure qui te fait le boulot.
Ca ressemblera à ca (pour les lignes allant des colonnes A à E) :

Code :
  1. Private sub Button_Click()
  2. 'ici on déclare les variables
  3. dim i as integer
  4. dim j as integer
  5. j =1
  6. 'boucle de traitement
  7. for i =  to 13000
  8. 'test si c'est un entier
  9. if IsInt(range("Feuil1!A" & i).value) then
  10. 'alors
  11. range("Feuil1!A" & i & ":E" & i).copy
  12. range("Feuil2!A" & j & ":E" & j).paste
  13. j = j + 1
  14. end if
  15. next i
  16. End Sub


 
Tu as compris l'idée ?

n°1521790
Dupuis_fre​e
Posté le 28-02-2007 à 16:02:41  profilanswer
 

Merci pour ta réponse.
Toutefois ca ne marche pas.
 
J'ai corrigé 2 erreurs, mais ca beug en ligne 12
 
1. Private Sub Button_Click()
2. 'ici on déclare les variables
3. Dim i As Integer
4. Dim j As Integer
5. j = 1
6. 'boucle de traitement
7. For i = 1 To 20000
8. 'test si c'est un entier
9. If Int(Range("Feuil1!A" & i).Value) Then
10. 'alors
11. Range("Feuil1!A" & i & ":B" & i).Copy
12. Range("Feuil2!A" & j & ":B" & j).Paste
13. j = j + 1
14. End If
15. Next i
16. End Sub

n°1522456
aprilthe5i​th
Posté le 01-03-2007 à 18:25:08  profilanswer
 

Private Sub Button_Click()
 
Dim i As Integer,j As Integer
 
j = 1
 
For i = 1 To 13000
    If CInt(Sheets(1).Cells(i, 1)) = Sheets(1).Cells(i, 1) Then
        Range(Cells(i, 1), Cells(i, 2)).Copy Sheets(2).Cells(j, 1)
        j = j + 1
    End If
Next i
 
End Sub

n°1523474
ingenieurc​esi
Posté le 04-03-2007 à 23:07:46  profilanswer
 

bonsoir,
 
a mon avis vu qe cint convertit un nombre en entier ca ne vas pas te convenir. j'ai pas trouvé de fonction qui verifier si un nombre est un entier mais y'aurais une petite combine.
 
je t'explique
 
un nombre entier n'as pas de virgule donc il suffirait de faire un test pour voir si le nombre en contient une.
 
la fonction instr permet de trouver la position d'un caractère particulier dans une chaine et si il n'y a pas ce caractère cela renvoie la valeur 0.
 
tu obtiens donc
 
Sub tat()
Dim va As String
nbl = Range("a6555" ).End(xlUp).Row
For l = 1 To nbl Step 1
va = RTrim(LTrim(Cells(l, 1).Value))
pos = InStr(1, va, "," )
If pos = 0 Then
'tu copies où tu veux
End If
Next l
End Sub
 
A+
 
 

n°1523561
jpcheck
Pioupiou
Posté le 05-03-2007 à 09:22:07  profilanswer
 

je reste persuadé d'avoir vu une fonction Isint() quelque part ;)

n°1523810
Paul Hood
Posté le 05-03-2007 à 14:58:43  profilanswer
 

Pour tester si une variable est de type entier :
if is typename(tavaleur)="Integer"

n°1523888
ingenieurc​esi
Posté le 05-03-2007 à 16:27:47  profilanswer
 

j'ai trouvé ca sur un topic et ca marche nickel
 
If CInt(tavaleur) = CDbl(tavaleur) Then
 
A+

n°1523942
aprilthe5i​th
Posté le 05-03-2007 à 17:10:02  profilanswer
 

Pour la petite histoire, mon code marche parfaitement puisque précisément CInt convertit tout nombre en entier, donc si le nombre à tester n'est pas entier, CInt(nombre)<>Nombre...

n°1524147
Paul Hood
Posté le 06-03-2007 à 08:37:16  profilanswer
 

Oui mais pourquoi faire simple quand on peut faire compliqué !!
Je peux aussi affecter dans un tableau chaque caractére à une celulle et puis tenter de faire une opération...une addition serait simple alors optons pour la multiplication... et si une erreur est générée c'est qu'il y a autre chose que du numérique et donc qu'il ne s'agit pas d'un entier.
 
Interessant non ? Et j'en ai d'autre...


Message édité par Paul Hood le 06-03-2007 à 08:37:56
mood
Publicité
Posté le 06-03-2007 à 08:37:16  profilanswer
 

n°1524310
aprilthe5i​th
Posté le 06-03-2007 à 12:55:07  profilanswer
 

Paul,  
 
1) ton code est incorrect,  
2)même en corrigeant ce code, "typename" renvoie indefectiblement un "double",
3) si 4 lignes de code c'est compliqué...

n°1525018
Paul Hood
Posté le 07-03-2007 à 10:27:41  profilanswer
 

Que le retour ne soit pas ce qui est attendu, ne veux pas dire que ca ne fonctionne pas.
Ca devient compliqué quand on peut trouvé plus simple.
 
Sur la forme, un peu d'humour ne fait pas de mal ... en tout il n'y avait aucune volonté de blessé qui que ce soit !


Message édité par Paul Hood le 07-03-2007 à 10:28:13
n°1528704
Dupuis_fre​e
Posté le 15-03-2007 à 01:51:43  profilanswer
 

Merci à tous pour vos réponses. Le test de la valeur entière fonctionne bien.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Sellection de lignes excel sur condition

 

Sujets relatifs
[resolu] VB macro de comparaison de lignes[excel+vba]ouvrir un batch faisant appel a une archive .jar
[Résolu][VBA Access + Excel] références à intégrerimprimer un fichier excel depuis visual basic 6
[MySQL]Execution d'une sous requete qui retourne plusieurs lignesSupprimer les dernières lignes d'un fichier.
[c/c++] lire des lignes en boucle jusqu'a EOFformule excel: faire varier la référence d'une cellule
Recherche convertisseur (Excel) xls en Csv[VBA] [résolu] Excel - bug sur macro toute simple
Plus de sujets relatifs à : Sellection de lignes excel sur condition


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR