IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA-E] MsgBox effacer


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut Help - MsgBox
    j'aurais souhaité que vous m'aidiez sur le point VBA suivant :

    Soit la colonne AA sous excel
    Les lignes allant de 500 à 600 sous excel
    J'aimerai que si une cellule (500:600, AA) soit effacée, automatiquement avant de prendre en compte le clearcontents, une message box apparaisse pour me dire "êtes vous sur de supprimer ce contenu"


    Je ne sais plus comment on fait... si vous pouviez m'aider, car cela fait 2 heures que je cherche et que je ne suis pas une professionnelle de VBA, mais une simple utilisatrice.


    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If msgbox("Effacer ?",vbyesno) = vbyes then 'tu effaces

  3. #3
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    Bonjour,
    Tu peux utiliser l'évènement de feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheeet_Change(ByVal Target As Range)
    en précisant la zone à surveiller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Target.Column = 27 and Target.Row >= 500 And Target.Row < 600 Then
        Response = MsgBox("Etes-vous sûr ?", VbYesNo)
    et ensuite selon la réponse à ta msgbox, tu supprimes ou pas
    Enfin je pense qu'avec qqch comme ça ça doit marcher

    Cwain

    Ouskel> Mince, flûte, trop tard !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut [VBA-E] MsgBox effacer
    Merci aux 2 génies qui m'ont répondu ... cela était déjà super utile mais cela n'est pas fini... car ma demande était visiblement n'est pas très claire...(désolée)

    j'aurais souhaité que vous m'aidiez sur le point VBA suivant :

    Soit la colonne AA sous excel (27) et les lignes allant de 500 à 600 sous excel.
    J'aimerai que si une cellule (500:600, AA) soit effacée, qu' avant de prendre en compte l'effacé (DONC UNIQUEMENT si il y a TENTATIVE de clearContents d'une de ces cellules), une message box apparaisse pour me dire "êtes vous sur de supprimer ce contenu".

    Voici ce que j'ai fait sur la base de ce que vous m'avez expliqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 27 And Target.Row >= 500 And Target.Row < 638 Then
    Style = vbYesNo + vbDefaultButton1
    Msg = "Etes-vous sûr de suprimer cette filiale"
    Title = "Attention, vous être sur le point de suprimer une filiale"
    Réponse = MsgBox(Msg, Style, Title)
    If Réponse = vbNo Then
    Exit Sub
    Else
    Selection.ClearContents
    End If
    End If
    End Sub
    Merci

  5. #5
    Membre éprouvé Avatar de cwain
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 218
    Par défaut
    Heu, on veut bien t'aider, mais tu nous aides pas trop à t'aider en remettant ta question de la même manière . Tu ne voudrais pas la reformuler, ou mieux encore, nous mettre le code que tu as actuellement avec des commentaires sur ce que tu ne comprends pas ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut Voici plus de détails - Msg VBA
    Désolée, je suis une nouvelle membre et je ne suis pas une professionnelle mais une amatrice! Voici des commentaires :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 27 And Target.Row >= 500 And Target.Row < 638 Then
    En fait, ce que je veux c'est une condition complémentaire qui est Si et seulement Si une des cellules Cells (500:600, 27) fait l'objet d'un ClearContents.

    La suite de mon code est (qui je pense fonctionne):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Style = vbYesNo + vbDefaultButton1
    Msg = "Etes-vous sûr de suprimer cette filiale"
    Title = "Attention, vous être sur le point de suprimer une filiale"
    Réponse = MsgBox(Msg, Style, Title)
    If Réponse = vbNo Then
    Exit Sub
    Else
    Selection.ClearContents
    End If
    End If
    End Sub
    Merci bcps

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Je pense qu'il vaut mieux utiliser les 2 événements Worksheet_Change et Worksheet_SelectionChange sinon, le seul fait de cliquer sur une cellule du Range, génère la demande d'effacement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    Option Explicit
     
    Dim strCellContent As String
    Dim booChangeByMacro As Boolean
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      strCellContent = Target.Value
    End Sub
     
    Private Sub Worksheet_Change(ByVal Target As Range)
      If booChangeByMacro Then
        booChangeByMacro = False
        Exit Sub
      Else
        If Target.Column = 27 And Target.Row >= 500 And Target.Row < 638 Then
          Style = vbYesNo + vbDefaultButton1
          Msg = "Etes-vous sûr de suprimer cette filiale"
          Title = "Attention, vous être sur le point de suprimer une filiale"
          Réponse = MsgBox(Msg, Style, Title)
          If Réponse = vbNo Then
            Target.Value = strCellContent
            booChangeByMacro = True
          End If
        End If
      End If
    End Sub
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    UN TOUT GRAND MERCI !!! Cela fonctionne à un poil pres qui est :

    Lorsque je clique sur No, je ne sors pas du MsgBox...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If Réponse = vbNo Then
          Target.Value = strCellContent
        Else
          Selection.ClearContents
        End If
    J'ai essayé comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       If Réponse = vbNo Then
          Exit Sub
        Else
          Exit Sub
        End If
      End If
    Cela fonctionne. L'idéal aurait été de pouvoir annuler l'opération "effacé" si VB = No.

    Savez-vous comment on peut faire ?

    Merci bcps!!

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Tu veux une confirmation de l'effacement de la part de l'utilisateur ?
    Si c'est ça alors tu répètes le code quon t'a passé pour le msgbox
    Si c'est autre chose, tu dis
    A+

  10. #10
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    J'ai modifié mon code en y ajoutant un booléen.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    ouskel'n'or : c'est autre chose.
    Je m'explique : l'utilisateur va supprimer le contenu d'une des cellules de la plage définie Cells (500:638, 27).... Cette opération sera prise en compte par Excel alors un message Box apparaît "être vous sur de supprimer cette filiale".
    Si je clique sur "Yes", alors exit sub, si je clique sur "No", alors je souhaite annuler l'opération d'effacement de la cellule (en gros revenir en arrière).


    Alain Tech : le booléen ne marche pas... j'avais essayé .

    Merci à tous pour votre aide sur ce sujet....

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    If Réponse = vbNo Then
    Exit Sub
    Else
    Exit Sub
    End If
    End If
    Si tu fais ça, ton test ne sert à rien, tu peux mettre Exit sub à la place, c'est pareil !
    Teste ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       If Réponse = vbNo Then
          Exit Sub
        Elseif Réponse = vbyes then
          'Tu effaces
        End If

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    Merci Ouskel'n'or

    J'ai essayé mais cela ne permet pas de faire un "undo" (annuler l'effacé) qui aura déjà été fait par l'utilisateur.

    Si VbNo, alors "undo"... et cela je ne sais pas faire... et vous ?

    J'ai essayé ce que vous m'avez proposé aujourd'hui, et cela ne fonctionne pas ....

  14. #14
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    je crois que ça, ça va te plaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Public adressecible As Variant
    Public valeurcible As Variant
    Public a As Boolean
    Private Sub Worksheet_Change(ByVal Target As Range)
    If a = True Then
    a = False
    Exit Sub
    End If
        If Target.Column = 27 And Target.Row >= 500 And Target.Row < 638 Then
        Style = vbYesNo + vbDefaultButton1
          Msg = "Etes-vous sûr de suprimer cette filiale"
          Title = "Attention, vous être sur le point de suprimer une filiale"
          Réponse = MsgBox(Msg, Style, Title)
     If Réponse = vbYes Then
     Exit Sub
     Else
     a = True
      Range(adressecible).Value = valeurcible
      End If
    End If
    End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        adressecible = Target.AddressLocal(True, True)
        valeurcible = Target.Value
    End Sub
    Voila, Voila
    Bonne soirée

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    La syntaxe est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       If Réponse = vbNo Then
           Application.Undo
           Exit Sub
         else
           '...
    Mais aucune autre action ne doit avoir été faite entre l'action et son annulation.
    A+

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    J'ai un petit souci (cela ne retire pas les éloges !!) :

    Lorsque je tape ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Réponse = vbNo Then
    Application.Undo
    Exit sub
    Il ne sort pas du Sub... en d'autres termes, lorsque je clique VbNo du MsgBox, il fait le "undo".... mais le MsgBox continue à apparaître...(comme si j'étais bloquée).... je suis obligée de cliquez sur VByes pour sortir du MsgBox....

    Qu'est ce que tu en penses docteur?

    Thanks!!

  17. #17
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    et si tu mettais deux fois le Application.Undo ? Juste une suggestion...

  18. #18
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    C'est le fait de modifier le contenu de la cellule dans l'événement Change qui rappelle le même événement.
    D'où l'idée du booléen.
    Je n'ai pas le temps de tester maintenant mais, peut-être, en déclarant le booléen Static...?
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  19. #19
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 567
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 567
    Par défaut
    bonjour nkhalidy
    es ce que tu a essayé ce que je t'ai proposé plus haut. tu n'en dis pas un mot, pourtant, cela fais exactement ce que tu as demandé, y compris le undo. je te le redonne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Public adressecible As Variant
    Public valeurcible As Variant
    Public a As Boolean
    Private Sub Worksheet_Change(ByVal Target As Range)
    If a = True Then
    a = False
    Exit Sub
    End If
        If Target.Column = 27 And Target.Row >= 500 And Target.Row < 638 Then
        Style = vbYesNo + vbDefaultButton1
          Msg = "Etes-vous sûr de suprimer cette filiale"
          Title = "Attention, vous être sur le point de suprimer une filiale"
          Réponse = MsgBox(Msg, Style, Title)
     If Réponse = vbYes Then
     Exit Sub
     Else
     a = True
      Range(adressecible).Value = valeurcible
      End If
    End If
    End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        adressecible = Target.AddressLocal(True, True)
        valeurcible = Target.Value
    End Sub

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    alsimbad : j'ai essayé ton code TROP FORT!!!! je n'ai pas tout compris.... mais cela fonctionne!!!

    Thanks!

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Débutante - Code VBA pour MsgBox avec actions multiples
    Par kisscool35 dans le forum Access
    Réponses: 5
    Dernier message: 22/08/2006, 17h43
  2. [VBA-A] msgBox sans boutton OK
    Par noob_vba dans le forum VBA Access
    Réponses: 8
    Dernier message: 09/06/2006, 19h56
  3. [VBA-E] fonction effacer
    Par naynai dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/05/2006, 17h12
  4. [VBA-E]Msgbox pas assez grand
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 26
    Dernier message: 19/04/2006, 14h18
  5. [VBA-E] [Excel] Effacer une feuille
    Par Tray dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/01/2003, 10h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo