1 pièce(s) jointe(s)
For Each objCell in Range
Bonjour,
J'ai un comportement assez bizarre de mon For Each :aie:
Je mets le morceau de code pour que ce soit plus clair :
Code:
1 2 3 4 5 6
| For Each objCell In Range(Range("col_filter_edi").Cells(2, 1), Range("col_filter_edi").End(xlDown))
'Si il y'a la valeur "archive"
If objCell = "archive" Then
'Couper coller de la ligne dans une autre feuille
End If
Next |
Et il se passe qqch de bizarre :D
J'ai rajouté un MsgBox(objCell.Address) avant le If pour en etre certain mais voilà ce que se passe.
La colonne nommé est la colonne Q
Dans cette colonne il y a tjs une formule donc mon range sélectionne de Q2 à la dernière ligne remplie.
Lorsque dans Q2, Q3, Q6 et Q7 j'ai la valeur "archive", mon message box me disant à quel cellule il en est pour le For m'affiche :
Q2
Q4
Q5
Q6
Q7
Q8
Q9
Q10
Mais où est passé Q3 ??
Je me suis dit que je devais avoir un problème dans mon code quand 2 lignes à traiter se suivait mais apparemment le soucis se pose que pour Q2 et Q3. Quand je teste avec des valeurs qui se suivent pour Q3 et Q4, et Q6 et Q7 ça marche très bien ...
Si qqn veut se casser la tête avec moi, voici le fichier joint au sujet. Le code se trouve dans le module 2 et dans la fonction archiver_lignes. Cette macro est lancé quand je clique sur le bouton à côté de "Ajouter Ligne". Vous inquiétez pas je vais pas vous laisser plancher tout seul si je trouve la solution je viendrais la poster aussi !
Pour les plus impatients voilà la fonction en entier (je sens que vous êtes impatients !! :yaisse2:).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
Sub archiver_lignes()
'Tableau pour les lignes à supprimer
Dim a_supprimer() As Integer
Dim ind As Integer
ind = 1
Worksheets("Dde EDI - NEOPOST").Select
'Pour toutes les cellules de la colonne Test archive
'Attention le range fonctionne car dans touts les cellules de cette colonne il y a une formule
For Each objCell In Range(Range("col_filter_edi").Cells(2, 1), Range("col_filter_edi").End(xlDown))
MsgBox (objCell.Address)
'Si il y'a la valeur "archive"
If objCell = "archive" Then
'Séléction de la ligne concerné
Rows(objCell.Row & ":" & objCell.Row).Select
'Sauvegarde des lignes à supprimer
ReDim Preserve a_supprimer(ind)
a_supprimer(ind) = objCell.Row
ind = ind + 1
'Couper
Selection.Cut
'Sélection de la feuille d'archive
Worksheets("Archive EDI - NEOPOST").Select
'Aller à la fin
If Range("A2") <> "" Then
Range("A1").End(xlDown).Offset(1, 0).Select
Else
Range("A2").Select
End If
'Coller
ActiveSheet.Paste
'Retour à la feuille des demandes
Worksheets("Dde EDI - NEOPOST").Select
End If
Next
'S'il y a des lignes à supprimer
If ind > 1 Then
'Boucle pour supprimer les lignes
'En partant de la fin pour pas tout décaler
For ind = UBound(a_supprimer) To 1 Step -1
Rows(a_supprimer(ind) & ":" & a_supprimer(ind)).Select
Selection.Delete Shift:=xlUp
Next
End If
End Sub |
Merci