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.
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