Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 !

eduraiss

XLDnaute Accro
Bonjour le forum

le code ci dessous me permet de maquer des colonnes avant de faire une impression
La macro plante trés souvent a Range(Cells(1, Colonne + 1), Cells(1, 256)).EntireColumn.Hidden = True
le message suivant s'affiche "impossible de définir la classe hidden de la classe range"

je ne comprend pas
merci de votre aide

Sub Masquer()

DateR = Range("B1").Value
Ligne = Range("B65536").End(xlUp).Row
Colonne = Range("D2:IV2").Find(DateR).Column

Range(Cells(1, 4), Cells(1, Colonne - 1)).EntireColumn.Hidden = True
Range(Cells(1, Colonne + 1), Cells(1, 256)).EntireColumn.Hidden = True
ActiveSheet.PageSetup.PrintArea = "$B$2:IV" & Ligne
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range(Cells(1, 4), Cells(1, 256)).EntireColumn.Hidden = False
ActiveSheet.PageSetup.PrintArea = ""
End Sub
 
Re : Bug macro

Salut,

Il me semble, mais sans avoir testé, que tu devrais limiter ton instruction à 255 car c'est le nombre maximum de colonnes.

Ainsi :

Range(Cells(1, Colonne + 1), Cells(1, 255)).EntireColumn.Hidden = True

devrait fonctionner.

A+
Horatio
 
Re : Bug macro

Bonjour Eduraiss, Lord Nelson et le forum,


Essayes ce code en prenant la précaution de changer le nom de la feuille.

Sub Masquer()
Dim DateR As Date, Ligne As Integer, Colonne As Byte

With Sheets("Feuil1") ' Nom de feuille à adapter
DateR = .Range("B1").Value
Ligne = .Range("B65536").End(xlUp).Row
Colonne = .Range("D2:IV2").Find(DateR).Column
Range(.Cells(1, 4), .Cells(1, Colonne - 1)).EntireColumn.Hidden = True
Range(.Cells(1, Colonne + 1), .Cells(1, 256)).EntireColumn.Hidden = True
.PageSetup.PrintArea = "$B$2:IV" & Ligne
.PrintOut Copies:=1, Collate:=True
Range(.Cells(1, 4), .Cells(1, 256)).EntireColumn.Hidden = False
.PageSetup.PrintArea = ""
End With
End Sub

Cordialement

Bernard
 
Re : Bug macro

Salut,

Il est possible que la macro plante lorsque DateR n'est pas trouvé. Tu peux y remédier en testant la valeur de Colonne :

Sub Masquer()

Dim Colonne As Long

DateR = Range("B1").Value
Ligne = Range("B65536").End(xlUp).Row
Colonne = Range("D2:IV2").Find(DateR).Column

If Colonne > 0 Then
Range(Cells(1, 4), Cells(1, Colonne - 1)).EntireColumn.Hidden = True
Range(Cells(1, Colonne + 1), Cells(1, 256)).EntireColumn.Hidden = True
ActiveSheet.PageSetup.PrintArea = "$B$2:IV" & Ligne
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Range(Cells(1, 4), Cells(1, 256)).EntireColumn.Hidden = False
ActiveSheet.PageSetup.PrintArea = ""
Else
MsgBox "Pas de concordance !"
End If

End Sub

A+
Horatio
 
- 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

Réponses
5
Affichages
914
Réponses
1
Affichages
325
Réponses
8
Affichages
782
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…