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 :

Ajouter une seconde macro a une feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut Ajouter une seconde macro a une feuille
    Bonsoir,

    Je reste bloqué sur l'association d'une deuxième macro sur une feuille:

    La première, qui fonctionne parfaitement:

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private Sub ToggleButton1_Click()
    ToggleButton1.Caption = IIf(ToggleButton1, "AM=PM", "AM<>PM")
    ToggleButton1.BackColor = IIf(ToggleButton1, vbGreen, vbRed)
    End Sub
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
         If Not Intersect(Target, Range("D5:NE5,D11:NE11,D17:NE17,D23:NE23,D29:NE29,D35:NE35,D41:NE41,D52:NE52,D58:NE58")) Is Nothing Then
            Debug.Print Target.Address
            If ToggleButton1 Then
                Target.Offset(2, 0) = Target
                Else
                Exit Sub
            End If
         End If
     
         If Not Intersect(Target, Range("D7:NE7,D13:NE13,D19:NE19,D25:NE25,D31:NE31,D37:NE37,D43:NE43,D54:NE54,D60:NE60")) Is Nothing Then
            Debug.Print Target.Address
            If ToggleButton1 Then
                Target.Offset(3, 0) = Target
                Else
                Exit Sub
            End If
         End If
     
     
     
     
    A laquelle je souhaiterais associer une seconde macro:
     
    If Target.Cells(1, 1) = "" Then
        Reponse = MsgBox("Voulez-vous supprimer ?", vbYesNo)
        If Reponse = vbNo Then
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
        End If
    End If
    End Sub
    Là, je sèche...C’est la première fois que j'essaie d'appliquer 2 macros...Et impossible....

    Si un pro pouvais me donner un tuyau, je serais plus que preneur...
    Un grand merci à ceux qui jetterons un œil,
    Bien amicalement...

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Comme ça peut être ?
    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     
        Application.EnableEvents = False
     
        If Not Intersect(Target, Range("D5:NE5,D11:NE11,D17:NE17,D23:NE23,D29:NE29,D35:NE35,D41:NE41,D52:NE52,D58:NE58")) Is Nothing Then
            If ToggleButton1 Then Target.Offset(2, 0).Value = Target.Value Else GoTo Fin
        End If
     
        If Not Intersect(Target, Range("D7:NE7,D13:NE13,D19:NE19,D25:NE25,D31:NE31,D37:NE37,D43:NE43,D54:NE54,D60:NE60")) Is Nothing Then
            If ToggleButton1 Then Target.Offset(3, 0).Value = Target.Value Else GoTo Fin
        End If
     
        If Target.Value = "" Then
            If MsgBox("Voulez-vous supprimer ?", vbYesNo) = vbNo Then Application.Undo
        End If
     
    Fin:
        Application.EnableEvents = True
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2018
    Messages : 28
    Par défaut Tout d'abord merci
    Alors, ça ne fonctionne pas,

    Mais vous m'apportez une piste....

    Je creuse...

    L'idée étant d'avoir 2 macro indépendantes dans la même feuille... En fait l'une et l'autre macro n’ont rien à voir entres elles...
    Je dois oublier quelque chose, mais quoi ???

    Le principe:
    La macro 1 est dépendante d'un toggle bouton: soit il est activé et il existe une recopie automatique d'une ligne sur une autre (2 conditions différentes selon la ligne), soit il est désactivé et il n'y a pas de recopie
    La 2 eme macro sert à confirmer l'effacement d'une ou plusieurs cellule afin d’éviter une modification involontaire

    Merci de votre aide en tout cas....

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Juste pour rappeler(faire observer) quant à moi que la méthode Application.Undo ne saurait rétablir des modifications autres que celles de l'utilisateur, ce qui n'est certes pas le cas de chacune de ces 2 instructions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If ToggleButton1 Then Target.Offset(2, 0).Value = Target.Value Else GoTo Fin
    ...
    ...
    If ToggleButton1 Then Target.Offset(3, 0).Value = Target.Value Else GoTo Fin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2016] Macro copier une sélection / coller dans une autre feuille
    Par BennyGamer dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/05/2018, 12h30
  2. une seule macro pour plusieurs feuilles d'un même classeur
    Par pouldom dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 31/12/2010, 12h38
  3. Réponses: 3
    Dernier message: 25/06/2007, 18h03
  4. Réponses: 2
    Dernier message: 23/04/2007, 01h10
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 22h24

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