explication boucle VBA

  • Initiateur de la discussion Initiateur de la discussion meldja
  • 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 !

meldja

XLDnaute Impliqué
Bonjour,
Je souhaiterais comprendre le pbme suivant :
lorsque l'utilisateur sélectionne une cellule comprise dans la plage A5:A140 et clique sur un bouton, une feuille se crée avec, pour nom, de la cellule active.
Pour être sûr que la cellule sélectionnée se trouve bien dans la plage voulue, j'ai essayé une boucle :
For i = 5 To 140
If ActiveCell <> Range("A" & i) Then
msgbox ...

Cette boucle ne marche pas.

Par contre, si je tourne le pbme à l'envers, ça marche :
For i = 5 To 140
If ActiveCell = Range("A" & i) Then
Exécution de la procédure

Je souhaiterais comprendre pourquoi ça marche avec = et pourquoi ça ne marche pas avec <>
Merci d'avance
 
Re : explication boucle VBA

Bonsoir meldja,

je ne répond pas directement à ta question, mais pour vérifier que la cellule active se trouve dans une plage donnée je coderais ainsi :

Code:
If Not Intersect(ActiveCell, Range("A5:A140")) Is Nothing Then _
    MsgBox "ok dans la plage"

bonne soirée
@+

Edition : dans tes boucles tu ne controles pas les adresses de cellule mais les valeurs...
 
Re : explication boucle VBA

bonjour meldja

A mon avis tes 2 boucles fonctionnent
Mais une seule comme tu voudrais !!
La premiere trouvera la condition ActiveCell <> Range("A" & i) a peu pres 134 fois
La seconde ne trouvera la condition ActiveCell = Range("A" & i) qu'une seule fois

pour faire plus simple (bien que je sois très loin de detester les boucles)

Code:
if activecell.column= 1 and activecell.row >4 and activecell.row<141 then

Edit : Salut Pierrot 🙂 🙂
 
Re : explication boucle VBA

Bonjour à tous

si tu veux faire ta boucle il faut faire

dim toto as boolean
For i = 5 To 140
If ActiveCell <> Range("A" & i) Then
toto = false
else
toto=true
exit for
end if
if toto = false then msgbox "pas dans la plage"
 
Re : explication boucle VBA

Merci à vous,
Vos réponses ne répondent pas directement à ma question, mais elles m'apportent d'autres approches que je ne connaissais pas et qui me seront très certainement utiles.
Encore merci et bonne soirée
 
Re : explication boucle VBA

Re

@ Pascal

peut-etre mieux comme ceci (pour verifier la presence de la cellule dans la plage et non l'identité des valeurs)

Code:
Dim toto As Boolean
For i = 5 To 140
 If ActiveCell[COLOR=blue].Address[/COLOR] <> Range("A" & i[COLOR=blue][COLOR=black])[/COLOR].Address[/COLOR] Then
  toto = False
 Else
  toto = True
 Exit For
End If
Next
If toto = False Then MsgBox "pas dans la plage"

Amitiés 🙂
 
Re : explication boucle VBA

Re,
Merci pour vos dernières réponses.
Au moment où j'envoyais mon dernier post, je n'avais pas vu la réponse de PascalXLD. J'ai voulu remercier une fois de plus, mais j'ai été déconnecté. On est toujours en connexion à bas débit où je suis et c'est pas évident le Net avec une bande passante de 25 kbits/s.
Bonne soirée
 
- 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
15
Affichages
820
Réponses
8
Affichages
797
Réponses
7
Affichages
540
Retour