[déplacé VB6 -> VBA] insertion ligne avec condition

castermans Messages postés 5 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 25 septembre 2012 - 25 nov. 2010 à 11:21
castermans Messages postés 5 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 25 septembre 2012 - 29 nov. 2010 à 11:07
Bonjour,
J'ai un tableau excel 12 col (A:L)et 3000 Lgn
Je souhaite ajouter une ligne au dessous de chaque ligne dont une cellule contient le texte "ECO" et si possible en copiant les cellules des colonnes A:D de cette même ligne contenant le texte en question.
Ex:
A B C D E F G H L
01/09 TSA BAN MAG ORI 120 54 256 244
01/09 MLA JIB MAG GEN 26 25 13 56
01/09 PLK JIB ECO HYU 125 156 125 53
01/09 SSA VIR ATE SMA 125 125 125 58
01/09 DAI DEL GUI ORI 254 45 45 79


Merci par avance

5 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
27 nov. 2010 à 09:18
Bonjour,
Ce code insere une ligne en dessous du mot recherché:

Sub ajout_ligne()
 Cells.Find(What:="ECO", After:=ActiveCell).Activate 'chercher le texte dans le fichier xls
    s = Replace(ActiveCell.Address, "$", "") 'recuperer l'adresse de la cellule
  ActiveCell.Offset(1, 0).EntireRow.Insert 'insertion ligne en dessous
  End Sub


Ensuite tu te sers de l'enregistreur de macro pour trouver la macro de copie des cellules. Tu mettras cette macro dans la macro "ajout_ligne" à la suite.

@+ Le Pivert
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
27 nov. 2010 à 09:20
Correction, la ligne:

s = Replace(ActiveCell.Address, "$", "") 'recuperer l'adresse de la cellule
tu peux la supprimer
0
castermans Messages postés 5 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 25 septembre 2012
29 nov. 2010 à 08:53
Bonjour et merci pour ton aide, si j'ai bien compris, l'ensemble de tes messages ça donne ceci, est-tu ok?


Sub ajout_ligne()
Cells.Find(What:="ECO", After:=ActiveCell).Activate 'chercher le texte dans le fichier xls
ActiveCell.Offset(1,0).EntireRow.Insert 'insertion ligne en dessous
End Sub
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
29 nov. 2010 à 10:23
Oui, c'est cela mais ce code ne trouvera que le premier "ECO".
Voici une macro qui recherchera toutes les cellules comportant le mot "ECO" dans toutes les feuilles avec un message qui te demandera si tu veux continuer la recherche et ajoutera une ligne en dessous à chaque fois.

Sub RechercheMot()
mot = "ECO"
    For feuille = 1 To Sheets.Count
        Sheets(feuille).Select
        Set trouvé1 = Cells.Find(What:=mot)
        If Not trouvé1 Is Nothing Then
            trouvé1.Activate
étiq:
            If MsgBox("Suivant ?", 4) = vbNo Then Exit Sub
            Set trouvé2 = Cells.FindNext(After:=ActiveCell)
            ActiveCell.Offset(1, 0).Insert 'en dessous
            If trouvé2.Column <> trouvé1.Column Or trouvé2.Row <> trouvé1.Row Then
                trouvé2.Activate
                GoTo étiq
            End If
        End If
    Next feuille
End Sub



@+ Le Pivert
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
castermans Messages postés 5 Date d'inscription jeudi 11 septembre 2008 Statut Membre Dernière intervention 25 septembre 2012
29 nov. 2010 à 11:07
C'est encore mieux, je te remercie encore et bonne journée.
0
Rejoignez-nous