Copier et déplacer des cellulles en vba

lolonico1974 Messages postés 2 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 27 juin 2012 - 27 juin 2012 à 11:10
lolonico1974 Messages postés 2 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 27 juin 2012 - 27 juin 2012 à 11:55
Bonjour à tous,
Je suis débutant en VBA et je demande votre aide car je dois mettre en place dans un fichier excel une macro

Mon fichier comporte 5 colonnes
Colonne A : Ma référence
Colonne B : REF
Colonne C : REF_1
Colonne D : REF_2
Colonne E : REF_3

Chaque fois que REF_1 est <>"", je dois insérer une ligne en dessous. idem pour REF_2 et REF_3.

J'ai commencé à écrire une macro qui répond à mon attente :
Sub Macro1()
lastr = Range("A65000").End(xlUp).Row
For i = lastr To 1 Step -1
Ref_1 = Left(Cells(i, 3).Value, InStr(Cells(i, 3).Value, ""))
Ref_2 = Left(Cells(i, 4).Value, InStr(Cells(i, 4).Value, ""))
Ref_3 = Left(Cells(i, 5).Value, InStr(Cells(i, 5).Value, ""))
If Ref_1 <> "" Then
Cells(i + 1, 1).Select
Selection.EntireRow.Insert Shift:=xlDown
End If
If Ref_2 <> "" Then
Cells(i + 1, 1).Select
Selection.EntireRow.Insert Shift:=xlDown
End If
If Ref_3 <> "" Then
Cells(i + 1, 1).Select
Selection.EntireRow.Insert Shift:=xlDown
End If
Next
End Sub


Maintenant il faut que ma macro fasse les choses suivantes :
Chaque fois qu'elle insère une nouvelle ligne, je dois copier la valeur qui se trouvait dans la colonne A de la ligne précédente dans la colonne A de la nouvelle ligne. Et je dois copier la valeur de REF_1 de la ligne précédente dans la colonne REF de la nouvelle ligne.

J'espère que mon explication est claire. si cela peut vous aider je peux joindre un petit fichier excel de test.

Merci d'avance pour votre aide

2 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 209
27 juin 2012 à 11:27
Bonjour,
1) Tu développes donc sous VBA/Excel et aurais dû ouvrir cette discussion dans la section "Langages dérivés > VBA" et non sous :
Forum > Visual Basic 6

Prends-en s'il te plait bonne note pour tes prochaînes discussions (important !)
2) ton exemple est en contradiction avec le code que tu montres et lkes explications que tu fournis !
que vient faire là-dedans le traitement de la colonne 3 ?
3) InStr(Cells(i, 3).Value, "") n'a aucun sens
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
lolonico1974 Messages postés 2 Date d'inscription mercredi 27 juin 2012 Statut Membre Dernière intervention 27 juin 2012
27 juin 2012 à 11:55
Bonjour et merci pour la note. Je ferais plus attention la prochaine fois.

Ma connaissance en VBA est vraiment légère...très légère.

Je viens de simplifier ma macro. Est-elle plus cohérente ?

Sub Macro1()
lastr = Range("A65000").End(xlUp).Row
For i = lastr To 1 Step -1
Ref_1 = (Cells(i, 3).Value)
Ref_2 = (Cells(i, 4).Value)
Ref_3 = (Cells(i, 5).Value)
If Ref_1 <> "" Then
Cells(i + 1, 1).Select
Selection.EntireRow.Insert Shift:=xlDown
End If
If Ref_2 <> "" Then
Cells(i + 1, 1).Select
Selection.EntireRow.Insert Shift:=xlDown
End If
If Ref_3 <> "" Then
Cells(i + 1, 1).Select
Selection.EntireRow.Insert Shift:=xlDown
End If
Next
End Sub


Pourquoi penses-tu que mon exemple est en contradiction avec mon code ? et quel est le problème avec ma colonne 3 ?

D'avance merci.
0
Rejoignez-nous