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

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 ...

Deadpool_CC

XLDnaute Accro
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:

Phil69970

XLDnaute Barbatruc
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
 

juicelink

XLDnaute Nouveau
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
 

soan

XLDnaute Barbatruc
Inactif
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
 

Discussions similaires

Statistiques des forums

Discussions
314 630
Messages
2 111 386
Membres
111 119
dernier inscrit
cooc