Bonsoir,
désolé de vous embêter avec ça, j'ai un petit soucis avec mon petit programme VBA. Il va surement vous paraître rédibitoire mais j'ai commencé VBA que depuis hier matin et quelque chose bloque dans ma formule. J'ai beau surfer sur les divers fourms je n'ai pas trouvé de solutions...
Pour résumer rapidement mon fichier excel:
J'ai un tableau avec 11 colonnes et 300 lignes environ. J'ai envie d'extraire les lignes dont la colonne J répond à un critère. C'est à dire que toutes les lignes dont la valeur de la cellule en colonne J est un "A" j'ai envie de copier cette ligne, de la coller dans une autre feuille nommée "Feuil3" en insérant une ligne (pour pas écraser d'éventuelles données"). De retourner ensuite dans ma feuille initiale "Données" où il y a le tableau et de supprimer la ligne que je viens de copier/coller.
Mon programme est le suivant. Il marche mais le problème c'est qu'il ne déplace qu'une ligne sur 2 qui se suivent avec le critère A parce que comme je supprime une ligne ça décale de 1... Une idée pour les faire toutes d'un coup ?
Sub enlever_depart()
Dim Ligne As Integer
Ligne = 1
Sheets("Données").Activate
'Feuille où j'ai mon tableau
For Ligne = 1 To 500
'Je commence ma boucle
Range("J" & Ligne).Select
'Je sélectionne la cellule J1
If ActiveCell.Value = "A" Then
'Si la valeur de la cellule est A - mon critère
Rows(Ligne).Select
Selection.Copy
Sheets("Feuil3").Select
Rows(Ligne).Select
Selection.Insert Shift:=xlDown
Selection.PasteSpecial
Sheets("Données").Select
Rows(Ligne).Select
Selection.Delete
'ca marche mais le soucis c'est qu'il recommence sur la ligne 2 hors comme j'ai supprimé une ligne ça a tout décalé
End If
Next
Sheets("Données").Select
Range("A6").Select
Sheets("Organigramme").Select
End Sub
Des idées pour faire tout d'un coup dans la boucle ? car au final ça marche si je lance plusieurs fois ma macro, à la fin toutes les lignes ont été déplacées mais j'aimerais le faire d'un coup.
Je vous remercie pour vos retours ou vos conseils,
je vous souhaite un bon week end
P-S: j'ai essayé de déclarer une cellule comme une variable (la variable c'est A)
mon idée était que Set A = Cells(Ligne, 10) puis plus tard dans ma boucle à la fin du if
Set A = Cells(Ligne-1, 10)
pour que le nouveau A respecte la ligne supprimée (enfin c'est pas clair mais dans tous les cas ça marchait pas).