lolonico1974
Messages postés2Date d'inscriptionmercredi 27 juin 2012StatutMembreDernière intervention27 juin 2012
-
27 juin 2012 à 11:10
lolonico1974
Messages postés2Date d'inscriptionmercredi 27 juin 2012StatutMembreDernière intervention27 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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 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
lolonico1974
Messages postés2Date d'inscriptionmercredi 27 juin 2012StatutMembreDernière intervention27 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 ?