Boucle while + incrément
Résolu/Fermé
manu6788
-
10 nov. 2011 à 10:10
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 10 nov. 2011 à 12:22
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 10 nov. 2011 à 12:22
A voir également:
- Boucle while + incrément
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Problème xiaomi redmi note 8t s'allume et s'éteint vibre - Forum Xiaomi
- Tv orange chargement en boucle ✓ - Forum TV & Vidéo
- Mon PC s'allume puis s'éteint tout seul. Que faire ? ✓ - Forum Matériel & Système
6 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
10 nov. 2011 à 10:18
10 nov. 2011 à 10:18
bonjour
While Range("k49") <> "YES"
manquait les guillemets
While Range("k49") <> "YES"
manquait les guillemets
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)
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
10 nov. 2011 à 10:33
10 nov. 2011 à 10:33
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
erreur sur la première ligne...
If Range("K49") = "YES" Then
If Range("K49") = "YES" Then
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
10 nov. 2011 à 10:40
10 nov. 2011 à 10:40
N'aurais tu pas, par hasard, en K49 une formule, laquelle renverrait actuellement une erreur genre #Div/0 ou #NA ou #J'ensaisrien...?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
10 nov. 2011 à 10:41
10 nov. 2011 à 10:41
Combien as tu de caractères dans K49 ?
test à faire avec =NBCAR(K49)
test à faire avec =NBCAR(K49)
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
Modifié par michel_m le 10/11/2011 à 10:54
Modifié par michel_m le 10/11/2011 à 10:54
Excuse moi de te déranger avec mes réponses manu
mais tu n'as pas besoin de boucle pour traiter ce oroblème (hormis K49)
Range("C49") = Range("C49") - (Range("C49") - Range("C48")) Mod 10
mais tu n'as pas besoin de boucle pour traiter ce oroblème (hormis K49)
Range("C49") = Range("C49") - (Range("C49") - Range("C48")) Mod 10
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
10 nov. 2011 à 11:03
10 nov. 2011 à 11:03
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
Le problème provient bien du résultat #NA dans ma cellule K49
comment faire pour qu'un résultats #NA ne lui pose pas problème et qu'il continue tout de même?
comment faire pour qu'un résultats #NA ne lui pose pas problème et qu'il continue tout de même?