Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Macro insérer ligne et copier informations

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Arwen43

XLDnaute Nouveau
Bonjour

Je voudrais faire la macro suivante:
* insérer une ligne en dessous dès que la cellule de la colonne B est égale à "GARMH"
* copier les informations de la cellule colonne A ligne précédente et colonne B ligne précédente dans cette nouvelle ligne créée

Je ne sais pas si cela est trés clair.

Merci de votre aide.
 
Salut Arwen43

Je ne suis pas un crac en VBA mais ce code devrait t'aider.

Si tu me passe un fichier sur lequel je peux travailler, je suis sure de pouvoir trouver une autre solution.


A plus

HopHopHop

VB:
Sub creation_ligne ()

Dim ligne as integer

Set Data = Sheets("nom_de_feuille").Range("AA:CC")

While Data.Cells(ligne, 1) <> ""
    If Data.Cells(ligne, 2) = "GARMH" Then
    Data.Cells(ligne + 1, 1).Select
    Selection.EntireRow.Insert
    Data.Cells(ligne-1, 1).Copy
    Data.Cells(ligne, 1).Select
    Selection.Paste
    Data.Cells(ligne+1, 2).Copy
    Data.Cells(ligne, 2).Select
    Selection.Paste
    End If
ligne = ligne + 1
Wend
End Sub
 

Merci de l'info. En pièce jointe le fichier, merci me dire si vous pouvez m'aider pour ma macro.
 

Pièces jointes

Ça fait le boulot que tu veux mais comme je n'ai pas le contexte de ce tableau, je ne suis pas certain que cela va suffire.

Sub creation_ligne()

Dim ligne As Integer

Set Data = Range("A:F")
ligne = 1
Application.DisplayAlerts = False
'Application.EnableEvents = False
While Data.Cells(ligne, 2) <> ""
Data.Cells(ligne, 1).Select
If Data.Cells(ligne, 2) = "GARMH" Then
Data.Cells(ligne + 1, 1).Select
Selection.EntireRow.Insert
Data.Cells(ligne, 1).Copy
Data.Cells(ligne + 1, 1).Select
ActiveSheet.Paste
Data.Cells(ligne, 2).Copy
Data.Cells(ligne + 1, 2).Select
ActiveSheet.Paste
ligne = ligne + 1
End If
ligne = ligne + 1
Wend
'Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
 
Dernière édition:

Merci ça fonctionne trés trés bien.
Copier coller les formules des colonnes C, D , E et F sur la nouvelle ligne
Je pense que c'est assez facile.

Et aussi (plus compliqué à mon sens)
Sur la première ligne (celle qui est copiée) Remplacer "GARMH" par "GAR"
Sur la deuxième ligne (celle qui a été insérée) Remplacer "GARMH" par "MH"

Merci beaucoup, cela est une grande aide pour moi
 
Voilà !!
Ca marche mais c'est très long sur mon ordi.

J'espère que sur le votre ça va aller mieux.


Code:
Sub creation_ligne()
Dim ligne As Integer
Set Data = Range("A:F")
ligne = 1
Application.DisplayAlerts = False
While Data.Cells(ligne, 2) <> ""
Data.Cells(ligne, 1).Select
If Data.Cells(ligne, 2) = "GARMH" Then
Data.Cells(ligne + 1, 1).Select
Selection.EntireRow.Insert
Range(Data.Cells(ligne, 1), Data.Cells(ligne, 6)).Copy
Data.Cells(ligne + 1, 1).Select
ActiveSheet.Paste
Data.Cells(ligne + 1, 2).FormulaR1C1 = "MH"
Data.Cells(ligne, 2).FormulaR1C1 = "GAR"
ligne = ligne + 1
End If
ligne = ligne + 1
Wend
Application.DisplayAlerts = True
End Sub
 

Ca fonctionne trés bien, merci beaucoup!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…