Macro : Cacher colonne variable

Bonjour,

Voici une macro quasi terminée (grâce à l'aide de Nad-Dan que je remercie) mais qui me pose encore un petit soucis.

Son rôle:

Le fichier contient 2 feuilles :

"Entrées & mise à jour & prix" (feuille source)

et

"Bon de commande" (feuille de destination)

Un bouton se trouve sur la feuille "Entrées & mise à jour & prix". Quand on clique dessus, un message box demande quelle colonne doit être testée.

Dans l'exemple il s'agit de la colonne H.

La macro teste toutes les lignes de la colonne H de la 1900 à la ligne 1.

Si une cellule contient autre chose que 0, la ligne entière est copiée sur la feuille "Bon de commande".

PROBLEME:

Une fois cette opération réalisée, la macro revient sur la feuille "Bon de commande" et doit cacher les colonnes C à "colonne choisie"-1 et les colonnes "colonne choisie"+1 à AU. Comment exprimer cela correctement en VBA ?

(Dans l'exemple je l'ai mis manuellement, c a d, colonne C à G et I à AU, mais cela devrait changer automatiquement via la macro, car si je change la colonne testée ces valeurs ne seront plus valables)).

Voici le code:

Sub triservjeun()

Dim col As String   
Dim F_S As Worksheet 'Feuille source
Dim F_D As Worksheet 'Feuille Destination
Dim Lig_S As Long 'Ligne source
Dim Lig_D As Long 'Ligne destination

'MEI **********************************************
'Définition des feuilles
Set F_S = Sheets("Entrées & mise à jour & prix") 'feuille source = onglet(Rex)
Set F_D = Sheets("Bon de commande") 'feuille destination = onglet(perimee)
col = Application.InputBox("Entrer la référence lettre de la colonne à tester")
'définition des lignes
'Lig_D = F_D.Range("D1900").End(xlUp).Row + 1
'Ligne destination est la première vide
Lig_D = 12
'Programme *****************************************
For Lig_S = 12 To F_S.Range(col & "1900").End(xlUp).Row
'Pour Ligne source = dernière non vide jusqu'à la ligne 1
'en passant à la ligne précédente par décrémentation (-1)
'Quand la valeur est inférieure à 1, on passe à laligne suivant Next Lig_S
If IsNumeric(F_S.Range(col & Lig_S)) Then
'évite les erreurs si tu as un titres
If Int(F_S.Range(col & Lig_S)) > 0 Then
'Col testée contient une date inférieure à aujourd'hui
F_S.Rows(Lig_S).Copy
F_D.Rows(Lig_D).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
F_D.Rows(Lig_D).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
'on copie la ligne source sur la ligne destination
Lig_D = Lig_D + 1
'on passe à la ligne destination suivante
End If
End If
Next Lig_S
'Retour à l'instruction For Lig_S....

‘Voici l’endroit qui pose problème
‘Si la colonne qu’on a choisi de tester est H
‘il faut cacher les colonnes de C à G et de I à AU
Columns("C:G").Select
Selection.EntireColumn.Hidden = True
Columns("I:AU").Select
Selection.EntireColumn.Hidden = True
MsgBox ("Fin de transfert")
'on avertit que c'est fini
End If

End Sub

Merci d'avance à ceux qui pourront m'aider,

DRV

Bonjour,

tu peux essayer avec ce code :

Columns("C:AU").EntireColumn.Hidden = True
Columns(col).EntireColumn.Hidden = False

Cool, ça fonctionne.

Simple comme bonjour, en réalité.

Merci Felix !!!

Rechercher des sujets similaires à "macro cacher colonne variable"