MsgBox successives

Résolu/Fermé
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - 2 juil. 2015 à 15:22
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - 7 juil. 2015 à 10:57
Bonjour,

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

PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
Modifié par PlacageGranby le 2/07/2015 à 16:29
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)

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") 
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
2 juil. 2015 à 16:47
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.
0
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
2 juil. 2015 à 16:56
Bonjour,
Si on résume :
MsgBox ("2 + 2 = " & 2 + 2)

va vous afficher "2 + 2 = 4"

On peut concatèner des calculs et du texte
 msgbox ("valeur TVA : " & round(range("K" & i).value * 0.196,2) & " et voila")
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
2 juil. 2015 à 17:14
Ah super sympa merci ça marche super bien.

Vraiment merci de m'aider, j'essaye d'apprendre et je me donne à fond.

Cordialement.
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
3 juil. 2015 à 09:45
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
3 juil. 2015 à 09:57
J'ai essayé le code suivant :

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....
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
3 juil. 2015 à 10:10
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
0
PlacageGranby Messages postés 393 Date d'inscription mercredi 26 mars 2014 Statut Membre Dernière intervention 7 mars 2019 26
6 juil. 2015 à 14:34
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

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.
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
7 juil. 2015 à 10:57
Merci beaucoup. Il s'agit en effet d'un Exit For dont j'ai besoin, il faut que le code suivant s'exécute en cas de "Cancel". Merci pour tout.
0