Bonjour,
J'ai un comportement assez bizarre de mon For Each
Je mets le morceau de code pour que ce soit plus clair :
Et il se passe qqch de bizarre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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 !!).
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager