Cacher Colonne Avec liste Validation

Bonjour!

J'ai une liste de validation, sur laquelle je fais un choix, en principe les colonnes qui ne correspondent pas à mon choix son cachées, mais a chaque choix c'est toutes les colonnes qui se trouvent cachées.

Voici le code, merci de trouver l'erreur;

If Target.Address = "$A$2" Then
            Application.ScreenUpdating = False
                Me.Columns.Hidden = False
                k = Me.Cells(2, Columns.Count).End(xlToLeft).Column
                Set prdts = Me.Cells(3, 4).Resize(, k - 3)
                p = WorksheetFunction.Match(Target, [2:2], 0)
                prdts.Columns.Hidden = True
                Columns(p).Hidden = False
            End If

Merci à tous

joindre le fichier

et préciser sur le fichier un exemple concret de colonnes cachées

Bonjour!

Merci à vous, voici le classeur en pJ.

il faut modifier le code si plus de 100 colonnes

attention de toujours avoir la même orthographe, il y avait un gélule avec un "s"

Bonjour!

Merci à vous gullaud

J'ai rajouter une condition if pour afficher toutes les colonnes, j'ai une erreur, merci de me corriger

Cordialement

Bonjour toutes et tous

essai comme ceci :

If Cells(3, parcours_colonne) = "Tout" Then     ' boucle pour afficher toute les colonnes

ou en rajoutant :

  On Error GoTo 0  'en cas d'erreur
     If Sheets("NOMENCLATURE").Range("A3").Value = "Tout" Then  ' boucle pour afficher toute les colonnes
                 Call affiche_toute_colonne
        Else
       End If

crdlt,

André

Bonsoir Andre13

Merci pour votre réponse, comme je suis pas trop connaisseur en VB, pouvez vous introduire votre code sur la Macro

Merci infiniment.

Re,

ci-joint

à tester,

crdlt,

André

Merci infiniment je vais tester un peu plus tard et je reviens vers vous.

Merci encore

j'ai pu supprimer le 100

12fep-cachcol.xlsm (86.75 Ko)

Bonsoir!

Merci à vous gullaud, Andre13 !

Il ne me reste qu'à adapter vos proposition sur mon classeur définitif, je reviendrais au besoin.

Cordialement

Bonsoir !

Je reviens! J'ai une erreur qui s'affiche " Erreur de Compilation; Type d'argument ByRef incompatible"; ce que j'ai changé c'est le nom de la feuille sur la ligne "der_col = derniere_colonne(NOMATRICE, 3)"

C'est quoi exactement cette erreur ???

Merci à vous de me corriger

Re,

recherche le mot NOMENCLATURE et remplace par le nom de ton onglet

Il y a trois changements à effectuer :

1/ Dans ==> Private Sub Worksheet_Change(ByVal Target As Range)

nomenclature à modifier ci-dessous

der_col = derniere_colonne(nomenclature, 3)

par

der_col = derniere_colonne(NOMATRICE, 3)  

2/ nomenclature à modifier ci-dessous

If Sheets("NOMENCLATURE").Range("A3").Value = "Tout" Then ' boucle pour afficher toute les colonnes

par

If Sheets("NOMATRICE").Range("A3").Value = "Tout" Then  ' boucle pour afficher toute les colonnes

3/ et dans le Sub affiche_toute_colonne(), nomenclature à modifier ci-dessous :

der_col = derniere_colonne(nomenclature, 3)

par

der_col = derniere_colonne(NOMATRICE, 3)  

EDIT : ne pas oublier d'enregistrer après son classeur

crdlt,

André

Re!

Oui évidement c'est ce que j'ai fais ???

Re,

à voir

Test en essayant de placer le code []Function dans un module[] et non pas dans la feuille, je viens de voir cela à l'instant

  Function derniere_colonne(f As Object, ligne As Integer)
'
' atteint la derniere ligne occupée d'une colonne
' f :feuille
' ligne : ligne

 Dim nb_colonne As Long
    nb_colonne = Columns.Count
    derniere_colonne = f.Cells(ligne, nb_colonne).End(xlToLeft).Column
End Function

Re!

Je dois mettre la fonction dans un module ???

C'est fait mais tjrs la même erreur désolé.

Je met le classeur grandeur nature, c'est mieux.

Merci encore.

18essai.xlsm (99.89 Ko)

j'ai remis 100 pour le nombre de colonnes

à modifier dans le code procédure "affiche_toute_colonne"

ne plus insérer ou supprimer de colonnes avant le premier médicament, sinon changer le code

ne plus insérer ou supprimer de lignes au début

l'erreur venait du nom de la feuille

pour une feuille on a deux noms

objet feuille, défini dans vba (type objet)

étiquette feuille définie en bas de la feuille de calcul (chaine de caractères type string)

Bonjour toutes et tous,

@Hosni

merci à Gullaud

voir le 100 de Gullaud

les petites erreurs que, j'ai vu ci-dessous :

1/ des colonnes AO à BC mettre correctement la majuscule à Comprimé (sensible à la casse)

2/ la Feuil2 mettre son nom 'nomatrice' dans sa propriété

3/ déplacer la function dans un module

4/ ne pas mettre masquer la ligne 10

EDIT : merci à Gullaud

nouvelle version sans la limitation à 100

Bonsoir !

Bonsoir à Andre13 et à gullaud et merci pour vos coups de main.

Désolé l'erreur " Erreur de Compilation; Type d'argument ByRef incompatible"; persiste encore

j'ai adapter convenablement vos deux macro mais en vain.

Je poste une capture de l'erreur au cas où ???

Je remet le classeur à l'état brut sans aucune macro pour éviter toute confusion.

erreur 01 erreur
7essai.xlsm (80.41 Ko)

Cordialement.

Rechercher des sujets similaires à "cacher colonne liste validation"