Boucle while + incrément
Résolu
manu6788
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
étant novice en macro, j'essaye d'un crée une permettant d'incrémenter une cellule (C49) de +10 en + 10 jusqu'à ce qu'une autre (K49) afficher "yes" ou que la valleur atteigne un certain nombre (présent dans C48)
par la suite je voudrais afficher un message indiquant qu'aucune solution 'a été trouvée (si C49 dépasse C48 sans qu'un YES ne se soit affiché).
J'ai créé cette macro qui semble ne pas fonctionner dès la conditions K49 différente de YES
While Range("k49") <> YES Or Range("c49") <= Range("C48")
Range("c49") = Range("c49") + 10
Wend
If Range("c49") > Range("c48") And Range("k49") <> "YES" Then MsgBox "No solution found", , "problem"
ps : je ne souhaite pas attribuer un nom à chaque cellule puisqu'un calcul doit se refaire à chaque incrément.
Merci d'avancepour vos conseils
étant novice en macro, j'essaye d'un crée une permettant d'incrémenter une cellule (C49) de +10 en + 10 jusqu'à ce qu'une autre (K49) afficher "yes" ou que la valleur atteigne un certain nombre (présent dans C48)
par la suite je voudrais afficher un message indiquant qu'aucune solution 'a été trouvée (si C49 dépasse C48 sans qu'un YES ne se soit affiché).
J'ai créé cette macro qui semble ne pas fonctionner dès la conditions K49 différente de YES
While Range("k49") <> YES Or Range("c49") <= Range("C48")
Range("c49") = Range("c49") + 10
Wend
If Range("c49") > Range("c48") And Range("k49") <> "YES" Then MsgBox "No solution found", , "problem"
ps : je ne souhaite pas attribuer un nom à chaque cellule puisqu'un calcul doit se refaire à chaque incrément.
Merci d'avancepour vos conseils
A voir également:
- Boucle while + incrément
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
6 réponses
Merci mais j'ai également essayé avec les guillemets et le résultat est le même
en essayant d'enlever cette partie "Range("k49") <> YES Or " ça fonctionne donc je pense que l'erreur vient de cette partie...
(le msgbox ne fonctionne pas non plus)
en essayant d'enlever cette partie "Range("k49") <> YES Or " ça fonctionne donc je pense que l'erreur vient de cette partie...
(le msgbox ne fonctionne pas non plus)
Bonjour,
Salut Michel,
Peut être un problème de casse...
Essaye ce test :
Salut Michel,
Peut être un problème de casse...
Essaye ce test :
Sub test() If Range("K49") = "YES" Then MsgBox "majuscule" ElseIf Range("K49") = "yes" Then MsgBox "minuscule" Else MsgBox "Pas Yes" End If If UCase(Range("K49")) = "YES" Then MsgBox "Même en minuscule ça fonctionne avec UCase()" End If End Sub
Quand tu testes en VBA le résultat d'une formule contenue dans une cellule, il faut que tu penses à gérer les erreurs possibles.
Tu as deux choix pour cela :
1- tu gères l'erreur dans la formule directement.
Exemple : en A1 : 10, en A2 : rien ou 1 en A3, la formule =A1/A2
Quand A2 n'est pas remplie, A1/A2 renvoie l'erreur #DIV/0!
Pour y remédier, un test SI suffit. La formule en A3 devient donc :
=SI(ESTERREUR(A1/A2);"";A1/A2)
2- tu gères l'erreur par VBA
par exemple :
Ensuite, je parlais de casse tout à l'heure. Si en K49 tu écris "Yes" (sans guillemets) et que tu testes comme ceci : If Range("K49") = "YES" Or Range("K49") = "yes", ça renverra toujours NON! Pour contourner ce problème on test sur la "transformation virtuelle" de K49 en majuscule : If UCase(Range("K49")) = "YES". Là tu obtiendras ce que tu souhaites.
C'est tout bon maintenant?
Tu as deux choix pour cela :
1- tu gères l'erreur dans la formule directement.
Exemple : en A1 : 10, en A2 : rien ou 1 en A3, la formule =A1/A2
Quand A2 n'est pas remplie, A1/A2 renvoie l'erreur #DIV/0!
Pour y remédier, un test SI suffit. La formule en A3 devient donc :
=SI(ESTERREUR(A1/A2);"";A1/A2)
2- tu gères l'erreur par VBA
par exemple :
If IsError(Range("A3")) Then 'Ici le traitement à effectuer si Erreur Else 'Ici le traitement à effectuer si pas d'erreur End If
Ensuite, je parlais de casse tout à l'heure. Si en K49 tu écris "Yes" (sans guillemets) et que tu testes comme ceci : If Range("K49") = "YES" Or Range("K49") = "yes", ça renverra toujours NON! Pour contourner ce problème on test sur la "transformation virtuelle" de K49 en majuscule : If UCase(Range("K49")) = "YES". Là tu obtiendras ce que tu souhaites.
C'est tout bon maintenant?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question