[Résolu] Comment utiliser 2x le même évènement dans la même feuille?

  • Initiateur de la discussion Initiateur de la discussion Neo37
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Neo37

XLDnaute Junior
Bonjour à tous,

Je souhaite utiliser dans la même feuille VBA l'évènement Worksheet_BeforeDoubleClick deux fois, mais apparemment ça fait bugger Excel, il me met un truc du style fonction Ambigu.

Je joins un fichier qui reprend le principe de mon vrai fichier. Je précise que je ne l'ai pas fait moi même, c'est un membre du Forum (Robert) qui m'a déjà aidé lors d'un autre sujet, d'où le fait qu'il soit si bien détaillé 😛

Dans les grandes ligne, mon vrai fichier contient une bonne centaine de ligne de données en Feuil1, une fonction double clique permet de copier en Feuil2 les lignes de données voulu. Maintenant je souhaite pouvoir aussi en double cliquant devant une des lignes en Feuil1, envoyé les valeurs de la ligne dans des cases en Feuil3 avec une impression de la Feuil3 dans la foulée. Pour l'impression je sais faire, mais ré-utiliser le même système de double clique dans la même feuille, je cale...

Merci à ceux qui s'y intéresseront.
 

Pièces jointes

Dernière édition:
Re : Comment utiliser 2x le même évènement dans la même feuille?

Bonjour Neo, bonjour le forum,

Je ne t'avais pas oublié mais j'attendais un fichier exemple...
le code modifié :

Code:
Private test As Boolean 'déclare la variable test

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim li As Integer 'déclare la variable li (LIgne)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)

If test = True Then test = False: Exit Sub 'si la variable test est vrai, definit test comme faux, sort de la procédure
dl = Cells(Application.Rows.Count, 1).End(xlUp).Row 'de'finit la dernière ligne éditée dl de la colonne 1 (=A)
Set pl = Range("A5:B" & dl) 'définit la plage pl (inclus maintenant la colonne B)
If Application.Intersect(Target, pl) Is Nothing Then Exit Sub 'si le changement a lieu aillerus qu'en pl, sort de la procédure
Cancel = True 'évite le mode edition lié au double clic
If Target.Value = "Envoyé OK" Then Exit Sub 'si la cellule double-cliquée contient "Envoyé OK", sort de la procédure
li = Target.Row 'définit la ligne li
Select Case Target.Column 'agit en fonction de la colonne de la cellule double-cliquée
    Case 1 'cas colonne 1 (=A)
        Set dest = Sheets("Feuil2").Cells(Application.Rows.Count, 2).End(xlUp).Offset(1, 0) 'définit la cellule de destination dest
        dest.Value = Cells(li, 3).Value 'dest prend la valeur de la donnée 1
        dest.Offset(0, 2).Value = Cells(li, 4).Value 'dest décalé de 2 colonne à droite prend la valeur de la donnée 2
        dest.Offset(0, 4).Value = Cells(li, 6).Value 'dest décalé de 4 colonne à droite prend la valeur de la donnée 3
        Target.Value = "Envoyé OK" 'écrit "Envoyé Ok" dans la cellule double-cliquée
        Target.Value = "Envoyé OK" 'écrit "Envoyé Ok" dans la cellule double-cliquée
    Case 2 'cas colonne 1 (=B)
        With Sheets("Feuil3") 'prend en compre l'onglet "Feuil3"
            .Range("C6").Value = Cells(li, 3).Value 'récupère en C6 la valeur de la cellule en colonne C
            .Range("E11").Value = Cells(li, 4).Value 'récupère en E11 la valeur de la cellule en colonne D
            .Range("D21").Value = Cells(li, 6).Value 'récupère en D21 la valeur de la cellule en colonne F
            Target.Value = "Envoyé OK" 'écrit "Envoyé Ok" dans la cellule double-cliquée
            .PrintOut Copies:=1 'imprime l'onglet
         End With 'fin de la prise en compre de l'onglet "Feuil3"
End Select 'fin de l'action en fonction de...
End Sub

La variable pl a été modifiée (une colonne en plus) et un Select Case Target.Column permet d'ajouter l'autre colonne...
 
Re : Comment utiliser 2x le même évènement dans la même feuille?

😀 ça c'est de la réactivité.

Désolé Robert je pensais que mon MP n'avait pas fonctionné, comme j'étais à mon taf et que c'était un peu de bordel. Je ne retrouvais pas trace de mon message, j'ai un peu de mal avec l'interface du forum pour retrouver mes petits 😛

Ta méthode Robert est un peu plus clean que celle de Paritec, elle définit mieux la plage des doubles cliques.
Mais merci quand même à toi Paritec, ça aurait aussi pu me convenir 🙂

Du coup je t'en dois encore une Robert, merci encore.

Bonne journée à vous.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour