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 ) afin de pouvoir accepter (ou non) de tous les créer d'un coup.

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

12suivi.xlsm (30.52 Ko)
8extract.xlsx (13.59 Ko)

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

Rechercher des sujets similaires à "msgbox possibilite tous"