MSGBOX avec possibilité "OUI POUR TOUS"
Bonjour,
J'aimerais simplifier l'utilisation d'une boîte de dialogue qui selon les cas peut aujourd'hui s'afficher avec la même question des dizaines de fois....
Je m'explique : Je mets à jour un classeur de plusieurs tableaux (onglets) (SUIVI) à partir d'une extraction (EXTRACT).
Mettons que mon SUIVI contiennent les onglets suivants : Chirurgie / Anesthésie / Rééducation.
Mon EXTRACT, elle, contient les même onglets mais possède également par exemple une trentaine d'onglets supplémentaires.
Actuellement, dans ma boucle de mise à jour, à chaque onglet inexistant dans SUIVI, une MSGBOX me demande si je veux créer l'onglet correspondant dans SUIVI (afin de permettre la mise à jour a posteriori).
Ce que je voudrais : Avoir la possibilité de choisir entre OUI, NON, ou OUI POUR TOUS...(enfin un équivalent quoi
Ci-dessous, mon code qui du coup peut me faire apparaître dans la foulée n fois la même box...
Merci beaucoup pour votre aide.
Bonne journée,
waxscud
With EXTRACT
For Each Ws In .Sheets 'BOUCLE : Pour chaque onglet Ws de EXTRACT
On Error Resume Next
ThisWorkbook.Sheets(Ws.Name).Select 'On essaye de sélectionner l'onglet équivalent dans SUIVI
If Err.Number = 9 Then 'Si cet onglet est inexistant...
If MsgBox("La spécialité n'existe pas dans le fichier de suivi. Le créér ?", vbQuestion + vbYesNo) = vbYes Then
Sheets.Add
ActiveSheet.Name = Ws.Name
Err.Clear
End If
End If
Next Ws
Bonjour
Donner le code, c'est bien.
Joindre le fichier, c'est mieux .
Beaucoup mieux !
Bye !
Bonjour GMB,
Merci pour ta réponse.
Comme mon fichier est complexe et bourré de macros, je ne voulais pas mettre le fichier complet.
Mais tu as raison, c'est mieux.
J'ai donc épuré tout ça. La macro dans l'onglet 1 du fichier de suivi déclenche ce que j'ai décris plus haut.
Elle propose de créer les onglets (et de les nommer) correspondant aux spécialités non déjà existantes dans le SUIVI et présentes dans l'EXTRACT.
Je voudrais donc pouvoir au lancement de la macro ou à la première MSGBOX spécifier un OUI pour tous
Merci encore,
Waxscud
Bonjour
Sans ton fichier, j'avais bricolé un petit truc
A tester
Bonjour Banzai64,
J'en profite pour te remercier à nouveau sur l'aide que tu m'a apporté sur mes précédentes recherches !
Concernant celle-ci, ma problématique est ailleurs.
Pour aboutir au résultat escompté, il faut effectivement construire ce genre de MSGBOX personnalisée.
En cela, ton bricolage va me faire gagner du temps c'est certain même si j'avais lu deux trois articles de blog sur la personnalisation des MSGBOX.
Mais ce qui me gène c'est plus comment coder dans le Case 2 (Oui pour tous) afin qu'effectivement les réponses aux MSGBOX à venir soient OUI automatiquement.
J'imagine qu'avec une variable boolean que je fixe à TRUE en case 2 puis que j'utilise en condition supplémentaire de boucle pourrait m'aider...
Qu'en penses-tu ?
Merci,
Waxscud
Bonjour
Dans le programme il y a une boucle de 1 à 10 qui simule la demande de création de feuille
Tu peux faire toute la boucle en répondant "Oui" ou "Non" mais dès que tu as appuyé sur "Oui pour tous", tu n'as plus aucune demande
C'est ce que tu voulais
waxscud a écrit :comment coder dans le Case 2 (Oui pour tous) afin qu'effectivement les réponses aux MSGBOX à venir soient OUI automatiquement.
Simple "Oui" et "Oui pour tous" ont la variable "Reponse" > 0
Ton programme pourrait ressembler à ça
Public Reponse As Integer
Sub Test()
Reponse = 0
With EXTRACT
For Each Ws In .Sheets 'BOUCLE : Pour chaque onglet Ws de EXTRACT
On Error Resume Next
ThisWorkbook.Sheets(Ws.Name).Select 'On essaye de sélectionner l'onglet équivalent dans SUIVI
If Err.Number = 9 Then 'Si cet onglet est inexistant...
If Reponse < 2 Then ' La précédente réponse était soit "Oui" ou "Non"
UserForm1.Show ' Donc on redemande
End If
If Reponse > 0 Then
' Soit "Oui" Soit "Oui pour Tous"
' traitement en cas de réponse "Oui"
Sheets.Add
ActiveSheet.Name = Ws.Name
Err.Clear
Else
' Non
' Traitement en cas de réponse "Non"
End If
End If
Next Ws
End With
End Sub
Merci Banzai,
Tu as encore une fois comblé mes lacunes en algorithmique !
Cela fonctionne parfaitement
Merci beaucoup !
Waxscud