[VBA]Excel - Box de confirmation

Excel - Box de confirmation [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 30-11-2005 à 14:24:39    

Bonjour à tous :hello:  
 
Etant encore un grand novice du code VBA sous Excel, j'ai quelques soucis pour avoir ce que je veux :)
 
Dans le cas présent, je souhaiterais qu'une boîte de dialogue s'affiche, demandant la confirmation d'enregistrement dans une autre feuille d'un certain nombre de données, avec les bouton "OK" et "Annuler".
 
Edit: il faudrait qu'une 2nde boite de dialogue apparaisse, demandant si on veut continuer l'enregistrement même si tous les champs à copier ne sont pas remplis.
 
De même, je souhaiterais qu'une autre boîte de dialogue s'affiche, m'indiquant cette fois-ci la confirmation d'enregistrement.
 
J'avais pensé à utiliser la commande While, mais je ne sais pas du tout comment introduire l'ensemble... Help plz! :jap:

Message cité 1 fois
Message édité par Nico-Rep le 30-11-2005 à 14:31:47

---------------
Topic de vente HW - Ancien feed
Reply

Marsh Posté le 30-11-2005 à 14:24:39   

Reply

Marsh Posté le 30-11-2005 à 16:34:30    

Bonjour Nico rep,
 

Nico-Rep a écrit :

Dans le cas présent, je souhaiterais qu'une boîte de dialogue s'affiche, demandant la confirmation d'enregistrement dans une autre feuille d'un certain nombre de données, avec les bouton "OK" et "Annuler".


Pour ça tu as :

Code :
  1. Sub test()
  2. Dim i
  3. i = MsgBox("voulez vous faire ci ou ça ? ", vbOKCancel)
  4. 'Ok renvois i=1, Cancel renvois i = 2, fermeture à la croix renvois i = 2
  5. End Sub

Ensuite tu fais un test sur la valeur de réponse
 

Nico-Rep a écrit :

Edit: il faudrait qu'une 2nde boite de dialogue apparaisse, demandant si on veut continuer l'enregistrement même si tous les champs à copier ne sont pas remplis.

Ben là il faut que tu testes tes champs puis tu peux utiliser une msgbox en vbyesno pour valider la suite du traitement.
 

Nico-Rep a écrit :

De même, je souhaiterais qu'une autre boîte de dialogue s'affiche, m'indiquant cette fois-ci la confirmation d'enregistrement.

A la fin de ton traitement il te suffit de placer une boite de ce type :

Code :
  1. MsgBox Prompt:="Le traitement c'est bien déroulé! ", Title:="Confirmation"


Dans l'aide tu as toutes les constantes pour tes msgbox =, tu y trouveras tout ce dont tu as besoin.  
 
Voilà pour ce qui concerne tes boîte de dialogue, pour ton traitement, et les test que tu veux faire c'est plus dur de t'aider comme ça...
Regarde plutôt les test avec :  if... Then... Else
 
Pour ce qui est de while, ça sert à faire une boucle de ce type "fais blabla tantque..."  

Citation :

Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]
Loop


ou

Citation :

Do
[statements]
[Exit Do]
[statements]
Loop [{While | Until} condition]

Je n'ai pas bien compris le rapport...
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Marsh Posté le 30-11-2005 à 17:55:53    

Merci beaucoup pour ton aide! :jap:


---------------
Topic de vente HW - Ancien feed
Reply

Marsh Posté le 30-11-2005 à 19:03:43    

Bon, je suis arrivé à faire la boite de dialogue de confirmation d'enregistrement, mais pas celle avec les tests.
 
Je te serais donc très reconnaissant si tu pouvais une dernière fois m'aider à ébaucher un code viable :)
 
Voilà ce que j'ai fait:
 

Citation :

a = 1
        #If Cells(3, a + 5) = "" Or Cells(3, a + 7) = "" Then
    Dim i
    i = MsgBox("Tous les champs ne sont pas renseignés." & vbLf & "            Enregistrer quand même?", vbOKCancel)
            #If i = 1 Then
        #End If
    Sheets("Liste clients" ).Select
    Rows("6:6" ).Select
    Selection.Insert Shift:=xlDown
    Sheets("Proposition de prêt" ).Select
    Range("K12:K22" ).Select
    Selection.Copy
    Sheets("Liste clients" ).Select
    Range("A6" ).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
    Range("A3:K250" ).Select
    Application.CutCopyMode = False
    Selection.Sort Key1:=Range("A4" ), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Sheets("Proposition de prêt" ).Select
    Range("B4" ).Select
            #Else
            Range("C4" ).Select
            #End If


 
Mais lorsque je veux appliquer, il me dit que j'ai une valeur non-définie, et il sélectionne le 1er Cells. Le code doit être totalement faux, mais le seul langage que j'ai à peu près maitrisé, c'est celui de ma calculatrice graphique, une casio qui avait un langage similaire (If, Goto, For etc...).
 
Donc merci pour ton aide ;)
 
NB: Tu remarqueras aussi l'utilisation à outrance de l'espace pour centrer le texte "Enregistrer quand même?" Existe-t'il une commande pour le centrer?


Message édité par Nico-Rep le 30-11-2005 à 19:31:14

---------------
Topic de vente HW - Ancien feed
Reply

Marsh Posté le 01-12-2005 à 09:07:56    

Salut Nico,
Apriori ton code me semble bon.
 
Ton problème viens du a je opense as tu bien un "dim a" ?  
 
En ce qui concerne le centrage des textes dans les msgbox non désolée, je sais pas faire j'ai jamais essayé :)
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed