Sellection de lignes excel sur condition - VB/VBA/VBS - Programmation
Marsh Posté le 28-02-2007 à 14:43:12
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 :
|
Tu as compris l'idée ?
Marsh Posté le 28-02-2007 à 16:02:41
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
Marsh Posté le 01-03-2007 à 18:25:08
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
Marsh Posté le 04-03-2007 à 23:07:46
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+
Marsh Posté le 05-03-2007 à 09:22:07
je reste persuadé d'avoir vu une fonction Isint() quelque part
Marsh Posté le 05-03-2007 à 14:58:43
Pour tester si une variable est de type entier :
if is typename(tavaleur)="Integer"
Marsh Posté le 05-03-2007 à 16:27:47
j'ai trouvé ca sur un topic et ca marche nickel
If CInt(tavaleur) = CDbl(tavaleur) Then
A+
Marsh Posté le 05-03-2007 à 17:10:02
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...
Marsh Posté le 06-03-2007 à 08:37:16
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...
Marsh Posté le 06-03-2007 à 12:55:07
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é...
Marsh Posté le 07-03-2007 à 10:27:41
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 !
Marsh Posté le 15-03-2007 à 01:51:43
Merci à tous pour vos réponses. Le test de la valeur entière fonctionne bien.
Marsh Posté le 28-02-2007 à 14:26:54
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