MsgBox successives
Résolu
Kuartz
Messages postés
852
Date d'inscription
Statut
Membre
Dernière intervention
-
Kuartz Messages postés 852 Date d'inscription Statut Membre Dernière intervention -
Kuartz Messages postés 852 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voici mon code :
En fait, j'aimerais que si on réponde Non à la question de la MsgBox2, alors le code continue, sinon, je veux sélectionner les cellules de la colonne P si les cellules de la colonnes D sont égales à "RAN". Je voudrais sélectionner ces cellules une par une et à chaque fois avec une MsgBox qui pose la question (La MsgBox3 quoi) entre chaque sélection. Si je répond "Oui" à la question de la MsgBox3 alors on remplit la cellule P en question, qui est égale à la cellule K sinon, on passe à la sélection suivante. Une fois toutes les lignes testées (il ne reste plus de "RAN"), on continue le code.
En termes plus mathématiques :
Si MsgBox2 = Non alors la suite du code continue. Si MsgBox2 = Oui, alors sélection des cellules de P une par une si cellule de D = "RAN". Entre chaque sélection, si MsgBox3 = Oui, alors, on remplir la cellule P avec un calcul, sinon, on passe à la ligne suivante. A la fin de toutes les vérifs, le code continue.
Merci d'avance.
Cordialement.
Voici mon code :
MsgBox2 = MsgBox("Voulez-vous remplir la TVA intracom à 19.6%?", vbYesNo, "Remplissage TVA intracom 19.6%") MsgBox3 = MsgBox("Cette facture est-elle soummise à TVA intracom à 19.6%?", vbYesNo, "Vérification") If MsgBox2 = vbYes Then For i = 13 To DL If Sheets(1).Range("D" & i) = "RAN" Then Sheets(1).Range("P" & i).Select If MsgBox3 = vbYes Then Sheets(1).Range("P" & i) = Sheets(1).Range("K" & i) Next i End If
En fait, j'aimerais que si on réponde Non à la question de la MsgBox2, alors le code continue, sinon, je veux sélectionner les cellules de la colonne P si les cellules de la colonnes D sont égales à "RAN". Je voudrais sélectionner ces cellules une par une et à chaque fois avec une MsgBox qui pose la question (La MsgBox3 quoi) entre chaque sélection. Si je répond "Oui" à la question de la MsgBox3 alors on remplit la cellule P en question, qui est égale à la cellule K sinon, on passe à la sélection suivante. Une fois toutes les lignes testées (il ne reste plus de "RAN"), on continue le code.
En termes plus mathématiques :
Si MsgBox2 = Non alors la suite du code continue. Si MsgBox2 = Oui, alors sélection des cellules de P une par une si cellule de D = "RAN". Entre chaque sélection, si MsgBox3 = Oui, alors, on remplir la cellule P avec un calcul, sinon, on passe à la ligne suivante. A la fin de toutes les vérifs, le code continue.
Merci d'avance.
Cordialement.
6 réponses
Bonjour,
Je crois qu'il suffirait de déplacer la ligne du msgbox3
(au lieu d'utiliser les variable msgbox2 et msgbox3, j'ai directement utiliser msgbox dans les IF)
Aussi, tu peux ajouter des données dynamiquement dans ton msgbox.
Exemple, si tu as un # de facture dans ta colonne A.
Je crois qu'il suffirait de déplacer la ligne du msgbox3
(au lieu d'utiliser les variable msgbox2 et msgbox3, j'ai directement utiliser msgbox dans les IF)
If MsgBox("Voulez-vous remplir la TVA intracom à 19.6%?", vbYesNo, "Remplissage TVA intracom 19.6%") = vbYes Then For i = 13 To DL If Sheets(1).Range("D" & i) = "RAN" Then Sheets(1).Range("P" & i).Select If MsgBox("Cette facture est-elle soummise à TVA intracom à 19.6%?", vbYesNo, "Vérification") = vbYes Then Sheets(1).Range("P" & i) = Sheets(1).Range("K" & i) End If End If Next i End If
Aussi, tu peux ajouter des données dynamiquement dans ton msgbox.
Exemple, si tu as un # de facture dans ta colonne A.
msgbox("La facture # " & Sheets(1).Range("A" & i).value & " est-elle soummise à TVA intracom à 19.6%?", vbYesNo, "Vérification")
Merci beaucoup de m'avoir simplifié tout ça. Je crois que j'étais en train de me perdre avec toutes ces conditions.
Je voulais simplement savoir, si à la place de vouloir le numéro de facture dans la MsgBox, je voulais directement avoir la TVA, soit un calcul qui ferait ARRONDI(Cellule K * 0.196;2). Est-ce possible?
Merci d'avance.
Cordialement.
Je voulais simplement savoir, si à la place de vouloir le numéro de facture dans la MsgBox, je voulais directement avoir la TVA, soit un calcul qui ferait ARRONDI(Cellule K * 0.196;2). Est-ce possible?
Merci d'avance.
Cordialement.
Ah super sympa merci ça marche super bien.
Vraiment merci de m'aider, j'essaye d'apprendre et je me donne à fond.
Cordialement.
Vraiment merci de m'aider, j'essaye d'apprendre et je me donne à fond.
Cordialement.
Supposons que je souhaite maintenant ajouter à cette macro un bouton "Cancel" qui me fera sortir de la boucle (si je me rend compte que j'ai trop de "RAN" et que je souhaite passer tout de suite à la suite du code).
Comment je peux m'y prendre svp?
Merci d'avance.
Cordialement.
Comment je peux m'y prendre svp?
Merci d'avance.
Cordialement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai essayé le code suivant :
Mais la MsgBox apparaît souvent 2 fois....
If MsgBox("Voulez-vous vérifier la TVA sur les débits?", vbYesNo, "Vérif RAN TVA débits") = vbYes Then For i = 13 To DL If Sheets(1).Range("D" & i) = "RAN" Then Sheets(1).Range("B" & i).Select If MsgBox("La facture suivante (tiers : " & Range("B" & i) & " ) est-elle soummise à TVA sur les débits?", vbYesNoCancel, "Vérif TVA débits") = vbYes Then Sheets(1).Range("N" & i) = Sheets(1).Range("K" & i) ElseIf MsgBox("La facture suivante (tiers : " & Range("B" & i) & " ) est-elle soummise à TVA sur les débits?", vbYesNoCancel, "Vérif TVA débits") = vbCancel Then Exit For End If End If Next i End If
Mais la MsgBox apparaît souvent 2 fois....
J'ai aussi essayé ce code, mais la MsgBox se lance 2 fois à chaque fois...
If MsgBox("Voulez-vous vérifier la TVA sur les débits?", vbYesNo, "Vérif RAN TVA débits") = vbYes Then For i = 13 To DL If Sheets(1).Range("D" & i) = "RAN" Then Sheets(1).Range("B" & i).Select If MsgBox("La facture suivante (tiers : " & Range("B" & i) & " ) est-elle soummise à TVA sur les débits?", vbYesNoCancel, "Vérif TVA débits") = vbYes Then Sheets(1).Range("N" & i) = Sheets(1).Range("K" & i) End If If MsgBox("La facture suivante (tiers : " & Range("B" & i) & " ) est-elle soummise à TVA sur les débits?", vbYesNoCancel, "Vérif TVA débits") = vbCancel Then Exit For End If Next i End If
Bonjour,
Le Msgbox apparait deux fois car il est appeler deux fois (dans chacun des IF).
Pour éviter cela, on va utiliser une variable (un peu comme votre code initial) et valider avec des elseif
Prendre note que le restant du code après la boucle s'effectue avec un Exit For .
Si vous voulez complètement sortir, alors un Exit Sub ferait l'affaire.
Le Msgbox apparait deux fois car il est appeler deux fois (dans chacun des IF).
Pour éviter cela, on va utiliser une variable (un peu comme votre code initial) et valider avec des elseif
If MsgBox("Voulez-vous vérifier la TVA sur les débits?", vbYesNo, "Vérif RAN TVA débits") = vbYes Then For i = 13 To DL If Sheets(1).Range("D" & i) = "RAN" Then Sheets(1).Range("B" & i).Select msgbox2 = MsgBox("La facture suivante (tiers : " & Range("B" & i) & " ) est-elle soummise à TVA sur les débits?", vbYesNoCancel, "Vérif TVA débits") If msgbox2 = vbYes Then Sheets(1).Range("N" & i) = Sheets(1).Range("K" & i) elseIf msgbox2 = vbCancel then exit For End if End If Next i End If
Prendre note que le restant du code après la boucle s'effectue avec un Exit For .
Si vous voulez complètement sortir, alors un Exit Sub ferait l'affaire.