XL 2019 Vba - boucle for each ne passe pas la premiere cellule

  • Initiateur de la discussion Initiateur de la discussion juicelink
  • Date de début Date de début

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 !

juicelink

XLDnaute Nouveau
Salut tout le monde 🙂

j'ai franchement hésité avant de poster car j'ai cherché dans mon coin, puis sur les forums mais je ne trouve pas...

je fais une boucle for each pour tester le début des formules présentes dans la plage... le but étant de copier/coller les valeurs des cellules correspondantes.
mais le truc, c'est que la boucle teste en boucle la premiere cellule de la plage...

Alors je me trouve assez nul de pas comprendre pourquoi, parce que je suis sur que c'est franchement basique, mais là... j'ai pas...
en même temps, je n'ai jamais été à l'aise avec les boucles for each, jamais compris pourquoi...

voila mon code (la fonction fonctionne, c'est juste la boucle qui... boucle bien mais toujours sur la même cellule...)
Si une bonne âme a pitié de moi...
merci beaucoup de votre aide !
Julien


VB:
Sub foreachmarchepas()


Dim Cellule As Range

For Each Cellule In Range("A1:J100")
If Left(ActiveCell.Formula, 7) = "=Dosssi" Or Left(ActiveCell.Value, 7) = "=Adress" Or Left(ActiveCell.Value, 7) = "=Codepo" Or Left(ActiveCell.Value, 7) = "=TEXTE(" Or Left(ActiveCell.Value, 7) = "=SI(Cré" Or Left(ActiveCell.Value, 7) = "=SI(Déb" Or Left(ActiveCell.Value, 7) = "=Crédit" Or Left(ActiveCell.Value, 6) = "=Débit" Then
    ActiveCell.Copy
    ActiveCell.PasteSpecial Paste:=xlPasteValues
End If
MsgBox ActiveCell.Address
Next Cellule


End Sub
 
Solution
Bonsoir, (<=ajout car oubli ..; lol)

si tu prend le "ActiveCell" cela travaille sur la celulle active au moment ou tu lance ta macro.
essaye en utilsant le "Cellule" qui boucle
... Left(Cellule.Formula, 7) = "=Dosssi" Or ...
Bonsoir, (<=ajout car oubli ..; lol)

si tu prend le "ActiveCell" cela travaille sur la celulle active au moment ou tu lance ta macro.
essaye en utilsant le "Cellule" qui boucle
... Left(Cellule.Formula, 7) = "=Dosssi" Or ...
 
Dernière édition:
Bonjour @juicelink

Edit :Bonjour @Deadpool_CC


Je te propose ceci :

VB:
Sub foreachmarchepas()

Dim Cellule As Range

For Each Cellule In Range("A1:J100")
If Left(Cellule.Formula, 7) = "=Dosssi" Or Left(Cellule.Value, 7) = "=Adress" Or Left(Cellule.Value, 7) = "=Codepo" Or Left(Cellule.Value, 7) = "=TEXTE(" Or Left(Cellule.Value, 7) = "=SI(Cré" Or Left(Cellule.Value, 7) = "=SI(Déb" Or Left(Cellule.Value, 7) = "=Crédit" Or Left(Cellule.Value, 6) = "=Débit" Then
    Cellule.Copy
    Cellule.PasteSpecial Paste:=xlPasteValues
End If
MsgBox Cellule.Address
Next Cellule

End Sub

*Merci de ton retour

@Phil69970
 
ahhhhhh mais merci !!!!
j'avais bien dit que c'était un truc basique... il me reste plus qu'à changer d'identité ^^
le msgbox, j'avais oublié de l'enlever, j'avais mis ca pour etre sur que ca bouclait toujours sur la meme cellule

encore merci !
julien
 
le "dosssi" c'était tellement gros je me suis dit c'est pas ça ... lol

oui, mais des fois, le demandeur peut ne pas s'être aperçu d'un simple "rebond de touche" qui fait qu'une lettre est malheureusement tapée en trop ! 😢 cette fois-ci, pourtant, et malgré les apparences, ce n'était pas le cas. 😉 (je ne pouvais pas le deviner !)

d'ailleurs, le demandeur juicelink a bien écrit : « c'est bien doSSSier avec 3 s... j'ai quelques noms un peu farfelus... »

soan
 
- 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
3
Affichages
469
Réponses
12
Affichages
1 K
Réponses
22
Affichages
3 K
Retour