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 !

bertrand1202

XLDnaute Occasionnel
Bonjour

Je recherche des explications sur cette fonction.
Je l'ai fait il y a deux jours , je le refais et ça ne pmarche pas .

Je cherche à insérer une ligne si cellule correspond à condition .
Quelle est la différence entre insert shift:xldown et entire row .insert

J etravaille sur une cellule appelée Vprenom ,
dois je noter Vprenom.offset(Vprenom,1) ou Vprenom(Vprenom.row,1)
Quelle est la solution dans la norme.
Ci joint :
Bout de code réalisé.
Sub Vinsereligne()
Dim Vprenom As Range

For Each Vprenom In Range("a4:a" & Range("A65536").End(xlUp).Row)
If Vprenom = "Lapin" Then
Cells(Vprenom.Row + 1, 1).Insert Shift:=xlDown
End If
Next Vprenom
End Sub
Merci de vos explications
 
Re : VBA:Inserer ligne

Bonjour,

le code avec quelques corrections en rouge :

Code:
Sub Vinsereligne()
Dim Vprenom As Range

For Each Vprenom In Range("a4:a" & Range("A65536").End(xlUp).Row)
    If Vprenom[COLOR="Red"].Value [/COLOR]= "Lapin" Then
        [COLOR="Red"]Rows(Vprenom.Row)[/COLOR].Insert Shift:=xlDown
        [COLOR="Red"]Exit Sub[/COLOR]
    End If
Next Vprenom
End Sub


le test ="Lapin" est fait sur la valeur de la cellule
Insertion de ligne porte sur la ligne et pas la cellule
j'ai ajouté un exit sub car sinon tu boucles jusqu'a dernière cellule de la feuille et ensuite erreur -> si tu as "lapin" en A5, la macro ajoute une ligne, mais en A6 on retrouve le "Lapin" que l'on vient de décaler , etc ...

J'espère que ca te va
 
Re : VBA:Inserer ligne

OK c'est normal. Le exit sub que j'ai mis dans le code arrête le traitement dès que la macro à trouvé un "Lapin"

Dans ta demande je n'avais pas saisi que le cas pouvait être multilple.

ce code doit marcher :

Code:
Sub Vinsereligne()
Dim lastrow As Long

Application.ScreenUpdating = False
Application.DisplayAlerts = False

lastrow = Range("A65536").End(xlUp).Row 'détecte la dernière ligne occupée
i = 4 '1° ligne traitée
Do While i <> lastrow
    If Cells(i, 1).Value = "Lapin" Then 'détection du "Lapin"
        Rows(i).Insert Shift:=xlDown
        lastrow = Range("A65536").End(xlUp).Row 'détecte la dernière ligne occupée suite à insertion
        i = i + 1 'on se repositionne sur la ligne avec "Lapin"
    End If
    i = i + 1 'passage ligne suivante
Loop

Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
 
Re : VBA:Inserer ligne

Bnjour

Merci pour ce commentaire commenté , en plus je vais pouvoir me lancer sur Do While .
Merci encore et désolé du dérangement ;je cherche à comprendre le fonctionnement de VBA pas à pas en me posant les quetions auxquelles je suis confronté sur la réalisation d'un tableau .
Le langage est encore un peu hermétique .
Lire les livres et faire des exercices concrets mais simple est ardu mais enrichissant. Merci également à ce forum

Merci
@+
 
- 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

Réponses
5
Affichages
916
Réponses
3
Affichages
333
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour