RESOLU par eriiiic - Simulation double click au (Code de Robert)

castor30

XLDnaute Occasionnel
Bonjour à tous, le forum,
Suite aux excellent code Robert que je remercie, je reviens vers vous pour y apporter une modif.
Le code ci-dessous se trouve sur la feuille Base.
VB:
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim TEST As Boolean 'déclare la variable TEST

If Target.Row < 3 Then Exit Sub 'si e changement a lieu dans une ligne inférieure à 3, sort de la procédure
'si le changement a lieu ailleurs que dans les colonnes S à U, sort de la procédure
If Application.Intersect(Target, Columns("S:U")) Is Nothing Then Exit Sub
Application.ScreenUpdating = False 'masque les rafraîchissement d'écran

'  [B] TROUVE CE CODE ICI[/B] : https://forum.excel-pratique.com/excel/executer-une-macro-si-reponse-msgbox-est-oui-t28092.html
'[B]c'est OK[/B]
    Dim ret As Integer
    ret = MsgBox("Souhaitez-vous imprimer l'état hébergement ?", vbYesNo)
    If ret = vbNo Then
        Exit Sub
    Else
        'ton code'
    End If

TV = Range("A2").CurrentRegion 'définit le tableau des valeurs TV
For I = 2 To UBound(TV) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    TEST = False 'initialise la variable TEST
    For J = 19 To 21 'boucle 2 : sur les colonne 19 à 21 (=> colonnes S à U)
        If TV(I, J) <> "" Then 'condition si la donnée ligne I colonne J de TV n'est pas vide
            TEST = True 'redéfinit la variable TEST
            Exit For 'sort de la boucle 2
        End If 'fin de la condition
    Next J 'prochaine colonne de la boucle 2
    If TEST = False Then Rows(I).Hidden = True 'si TEST est [Faux], masque la ligne I
Next I 'prochaine ligne de la boucle 1
'masque les colonnes
Application.Union(Columns("C:E"), Columns("H:H"), Columns("N:R"), Columns("V:V")).EntireColumn.Hidden = True

' [B]J'AI AJOUTE :[/B]
    ActiveWindow.SelectedSheets.PrintOut Copies:=1
[B]'Ce qu'il faudrait c'est simuler double click sur ligne 1 pour ré afficher toute la feuille Base[/B]
If Target.Row / 2 = Int(Target.Row / 2) Then

End If
End Sub
 

Pièces jointes

  • Castor_v02.xls
    244.5 KB · Affichages: 53

castor30

XLDnaute Occasionnel
Bonjour eriiiic,
Merci de me venir en aide, cependant ça ne marche pas.
Je ne dois sans doute pas faire comme il faut.
Veux-tu me remettre le code ci-avant avec la modification ou il faut.
Mes connaissances vba sont très limités.
 

eriiic

XLDnaute Barbatruc
J'ai bien précisé si tu es dans la même feuille, tu n'as pas confirmé...
Tu mets la ligne là ᴏù tu as mis :
'Ce qu'il faudrait c'est simuler double click sur ligne 1 pour ré afficher toute la feuille Base
puisque tu veux que ça se fasse ici.
Par contre un double-clic sur une ligne complète ça n'existe pas. Choisis la cellule de la ligne et tu remplaces Target par celle-ci.
Par exemple [A1]
 

castor30

XLDnaute Occasionnel
Re,
Je suis bien sur la feuille Base.
Ce que je voudrai, c'est m'affranchir du double click et que celui-ci se fasse par vba.
Avant le code ci-dessus, j'ai celui-ci qu fonctionne si je fais un double click :

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dans l'onglet
'si le double-clic a lieu dans la ligne 1, affiche toutes les lignes et colonnes et empêche le mode [Édition] lié au double-clic
If Target.Row = 1 Then Rows.Hidden = False: Columns.Hidden = False: Cancel = True
End Sub
 

Statistiques des forums

Discussions
312 299
Messages
2 086 993
Membres
103 422
dernier inscrit
victus5