Boucle si cellule contient un commentaire
Résolu/Fermé
conrade82
Messages postés
96
Date d'inscription
dimanche 21 avril 2013
Statut
Membre
Dernière intervention
9 septembre 2016
-
28 févr. 2014 à 14:41
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 - 14 mars 2014 à 11:41
Le Pingou Messages postés 12225 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 6 décembre 2024 - 14 mars 2014 à 11:41
A voir également:
- Boucle si cellule contient un commentaire
- Excel cellule couleur si condition texte - Guide
- Si cellule contient texte alors ✓ - Forum Excel
- Ce fichier contient l'historique des livres empruntés à la bibliothèque. combien de titres différents contient-il ? ✓ - Forum Excel
6 réponses
pilas31
Messages postés
1825
Date d'inscription
vendredi 5 septembre 2008
Statut
Contributeur
Dernière intervention
24 avril 2020
644
28 févr. 2014 à 15:47
28 févr. 2014 à 15:47
Bonjour,
En fait c'est comment.Text qui provoque une erreur si le commentaire n'existe pas. Il faut tester autrement. Voici une solution :
J'ai enlevé le "Workbooks("Test1")." car par défaut il s'agit du classeur courant
A tester
En fait c'est comment.Text qui provoque une erreur si le commentaire n'existe pas. Il faut tester autrement. Voici une solution :
Sub Macro4() Dim i As Integer lastli = Sheets("mb").Range("A6").End(xlDown).Row For i = 6 To lastli If Not Sheets("mb").Range("E" & i).Comment Is Nothing Then Sheets("mb").Range("E" & i).Interior.ColorIndex = 39 End If Next i End Sub
J'ai enlevé le "Workbooks("Test1")." car par défaut il s'agit du classeur courant
A tester
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 454
1 mars 2014 à 22:32
1 mars 2014 à 22:32
Bonjour ,
Avec départ A10 et fin en A6
Avec départ A10 et fin en A6
For i = 10 To 6 Step -1
.....
.....
Next i
conrade82
Messages postés
96
Date d'inscription
dimanche 21 avril 2013
Statut
Membre
Dernière intervention
9 septembre 2016
4
2 mars 2014 à 01:18
2 mars 2014 à 01:18
Merci Le Pingou. J'ai posté un code avec une boucle en Do et Loop until car en plus d'une boucle inversée, je voudrai que ma boucle s'arrête dès qu'une cellule contient un commentaire sur la place allant de A10 à A6. Mais mon code Loop until génère un bug. Où est mon erreur?
Merci d'avance.
Merci d'avance.
conrade82
Messages postés
96
Date d'inscription
dimanche 21 avril 2013
Statut
Membre
Dernière intervention
9 septembre 2016
4
>
conrade82
Messages postés
96
Date d'inscription
dimanche 21 avril 2013
Statut
Membre
Dernière intervention
9 septembre 2016
2 mars 2014 à 01:22
2 mars 2014 à 01:22
Si je garde le corps du code de Pilas31 et au lieu de la boucle For i, je prends une boucle en do until / loop, ça fonctionnerait? J'essaie demain ou vous dirai. Merci en tout cas de votre patience et de votre aide.
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 454
2 mars 2014 à 14:30
2 mars 2014 à 14:30
Bonjour,
Note: ma proposition pour la boucle For ..To ....Next
Salutations.
Le Pingou
Note: ma proposition pour la boucle For ..To ....Next
Salutations.
Le Pingou
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 454
2 mars 2014 à 15:04
2 mars 2014 à 15:04
Bonjour,
Au passage macro avec For et Do en commençant par la fin :
Au passage macro avec For et Do en commençant par la fin :
Sub Macro_fornext()
Dim i As Integer, decal As Integer
lastli = Sheets("mb").Range("A6").End(xlDown).Row
For i = lastli To 6 Step -1
If Not Sheets("mb").Range("E" & i).Comment Is Nothing Then
Sheets("mb").Range("E" & i).Interior.ColorIndex = 39
End If
Next i
End Sub
Sub Macro_doloop()
Dim i As Integer, decal As Integer
lideb = 6
lifin = Sheets("mb").Range("A6").End(xlDown).Row
c = lifin
Do
If Not Sheets("mb").Range("E" & c).Comment Is Nothing Then
Sheets("mb").Range("E" & c).Interior.ColorIndex = 39
End If
c = c - 1
Loop Until c < lideb
End Sub
conrade82
Messages postés
96
Date d'inscription
dimanche 21 avril 2013
Statut
Membre
Dernière intervention
9 septembre 2016
4
4 mars 2014 à 16:41
4 mars 2014 à 16:41
Bonjour,
Le problème avec les boucles ci-dessus, c'est qu'elles ne s'arrêtent pas en fonction du contenu de la cellule mais en fonction de i donc de la plage définie. Or, je voudrai que ma boucle s'arrête dès que la condition IF NOT est avérée. En l'occurence, sur la palge lideb et lifin (exemple de A6 à A10), si la cellule A8 contient un commentaire, je voudrai que la macro effectue la manoeuvre (copier/coller) et la boucle s'arrête nette/ou passe au code suivant. Le but de ma démarche est de déterminer le dernier commentaire créer sur la plage de A6 à A10 par exemple car il se peut qu'il y ait des commentaires en A6, A8 et A9. Il me faut le dernier commentaire en partant de A6.
Afin de contourner cela, j'ai pensé à la boucle en Step -1 afin de faire la démarche à l'envers et ainsi déterminer le premier commentaire en partant de A10 à A6.
Désolé si je ne suis pas parvenu au premier abord de mieux exprimer mon besoin. Suite à ce que je viens d'évoquer à l'instant, comment pourrai-je faire ça ?
Merci d'avance.
Le problème avec les boucles ci-dessus, c'est qu'elles ne s'arrêtent pas en fonction du contenu de la cellule mais en fonction de i donc de la plage définie. Or, je voudrai que ma boucle s'arrête dès que la condition IF NOT est avérée. En l'occurence, sur la palge lideb et lifin (exemple de A6 à A10), si la cellule A8 contient un commentaire, je voudrai que la macro effectue la manoeuvre (copier/coller) et la boucle s'arrête nette/ou passe au code suivant. Le but de ma démarche est de déterminer le dernier commentaire créer sur la plage de A6 à A10 par exemple car il se peut qu'il y ait des commentaires en A6, A8 et A9. Il me faut le dernier commentaire en partant de A6.
Afin de contourner cela, j'ai pensé à la boucle en Step -1 afin de faire la démarche à l'envers et ainsi déterminer le premier commentaire en partant de A10 à A6.
Désolé si je ne suis pas parvenu au premier abord de mieux exprimer mon besoin. Suite à ce que je viens d'évoquer à l'instant, comment pourrai-je faire ça ?
Merci d'avance.
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 454
4 mars 2014 à 17:23
4 mars 2014 à 17:23
Bonjour,
Je comprends, vous voulez le dernier commentaire soit le numéro de ligne le plus élevé réaliser le copier/coller et on sort de la macro. Oui / Non !
Remarque il n'y a pas de copier/coller dans votre code mais simplement une couleur de fond...!
Je comprends, vous voulez le dernier commentaire soit le numéro de ligne le plus élevé réaliser le copier/coller et on sort de la macro. Oui / Non !
Remarque il n'y a pas de copier/coller dans votre code mais simplement une couleur de fond...!
conrade82
Messages postés
96
Date d'inscription
dimanche 21 avril 2013
Statut
Membre
Dernière intervention
9 septembre 2016
4
4 mars 2014 à 19:18
4 mars 2014 à 19:18
Oui vous m'avez compris.
Remarque: vous avez raison, il ne s'agit pas de copier/coller mais de couleur de fond.
Remarque: vous avez raison, il ne s'agit pas de copier/coller mais de couleur de fond.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 454
4 mars 2014 à 21:51
4 mars 2014 à 21:51
Bonjour,
Alors pour il faut insérer une instruction juste après la ligne :
Sheets("mb").Range("E" & c).Interior.ColorIndex = 39
Pour la macro For to .....
Soit :
Soit :
Alors pour il faut insérer une instruction juste après la ligne :
Sheets("mb").Range("E" & c).Interior.ColorIndex = 39
Pour la macro For to .....
Exit For
Soit :
Sheets("mb").Range("E" & c).Interior.ColorIndex = 39Pour la macro Do Loop ......
Exit For
End If
Exit Do
Soit :
Sheets("mb").Range("E" & c).Interior.ColorIndex = 39
Exit Do
End If
conrade82
Messages postés
96
Date d'inscription
dimanche 21 avril 2013
Statut
Membre
Dernière intervention
9 septembre 2016
4
14 mars 2014 à 09:57
14 mars 2014 à 09:57
Excellent! Merci beaucoup!
Le Pingou
Messages postés
12225
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
6 décembre 2024
1 454
14 mars 2014 à 11:41
14 mars 2014 à 11:41
Merci, de rien.
1 mars 2014 à 18:23
ça fonctionne super bien. J'aurai une question, est-ce possible de faire une boucle inversée ? La boucle actuelle va de 6 à 10 par exemple. Mais peut-on partir de la cellule A10 à la cellule A6 ? Exemple que j'ai tenté et qui ne fonctionne pas:
L'idée est la même que ma première question à savoir si en remontant de 10 à 6, si on tombe sur un commentaire, alors on colorie la cellule E6.
Merci du coup de main.
Modifié par conrade82 le 1/03/2014 à 20:01
Merci de votre aide.