Macro pour afficher une colonne à la fois

Bonjour!

Je débute sur Excel et VBA, je suis entrain de créer un fichier dans le but de faire l'inventaire des caisses de plusieurs mécaniciens. Le but est de savoir le prix des outils que chaque mécanicien aura cassé/perdu au cours de l'année.

J'ai attaché un fichier exemple, il n'est certes pas parfait mais il fonctionne

Quand on fait l'inventaire de la caisse d'un mécanicien, on entre 1 dans le tableau s'il a l'outil, 0 sinon.

Seulement voila, j'ai peur que la personne qui fasse l'inventaire change de colonne sans s'en rendre compte, ou que les colonnes les plus éloignés soient compliqués à afficher sur l'écran en même temps que les colonnes avec les informations.

J'ai donc essayé de faire une macro qui permettrait en 1 clic, de cacher toutes les colonnes des mécaniciens sauf une. C'est à dire, si je veux faire l'inventaire de la caisse du mécanicien n°5, je sélectionne la colonne correspondante(M), j'active ma macro et toutes les autres colonnes (de I à Z) se masquent pendant l'inventaire. Dès que l'inventaire est terminé, une autre macro réaffiche toutes les colonnes.

Pour réafficher tout, c'est très simple:

Sub Macroaffichertout()

Columns("I:Z").Select

Selection.EntireColumn.Hidden = True

End Sub

Pour cacher toutes les colonnes sauf une, là j'ai un problème:

Comment faire pour "sauvegarder" la colonne sélectionnée par l'utilisateur, dans le code?

J'avais pensé quelque chose comme ceci:

Sub MacroUneColonne()

ColonneChoisie = Selection 'La sélection se sauvegarde dans une variable ColonneChoisie

Range("I:Z").Select

Selection.EntireColumn.Hidden = True 'Je cache toutes les colonnes

Range("ColonneChoisie").Select 'Je récupère ma première sélection

Selection.EntireColumn.Hidden = False 'et je l'affiche

End Sub

La ligne "Range("ColonneChoisie").Select " est malheureusement fausse. Est-ce une erreur de méthode ou bien juste de code? Je ne connais pas beaucoup les fonctions utilisables pour ce cas.

Y a-t-il un autre moyen de garder une seule colonne affichée, sans faire une macro par colonne?

Je vous remercie par avance en espérant que vous pourrez m'aider!

Azounet

PS: Je débute sur Excel, il est probable que si vous deviez faire la même chose que moi, vous feriez les choses très différemment. Ne vous arrachez pas les cheveux! :p

Salut,

Dans le fichier ci-joint, je te propose une solution qui fonctionne par double-clic.

Un double-clic dans un nom : sa colonne s'affiche seule

Un double-clic ailleurs : tout est à nouveau visible.

Amicalement.

Bonjour, salut Yvouille !

Je te suggère de créer un questionnaire Google Forms. Les réponses viennent s'ajouter automatiquement dans un tableur Google Sheets (exportable si besoin dans Excel). Comme ça pas de risque de saisie décalée, pas possible pour les mécaniciens de consulter des informations qui ne les concernent pas et la construction de ton fichier est automatisée...

Salut,

Dans le fichier ci-joint, je te propose une solution qui fonctionne par double-clic.

Un double-clic dans un nom : sa colonne s'affiche seule

Un double-clic ailleurs : tout est à nouveau visible.

Amicalement.

Ca fonctionne parfaitement c'est très ingénieux! J'ai fait des recherches pour bien comprendre le code (car je n'avais pas la moindre idée que c'était possible) et il me reste une petite question, par curiosité:

Sur ce code:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim i As Integer

If Not Intersect(Target, Range("I6:Z6")) Is Nothing Then

Columns("I:Z").EntireColumn.Hidden = True

Target.Columns.EntireColumn.Hidden = False

GoTo Etiquette

End If

Cells.EntireColumn.Hidden = False

Etiquette:

Range("A1").Select

ActiveWindow.ScrollColumn = 1

ActiveWindow.ScrollRow = 1

End Sub

La ligne "Dim i As Integer" est-elle utile? Puisque la variable i n'est pas réutilisée plus tard dans le code?

Bonjour, salut Yvouille !

Je te suggère de créer un questionnaire Google Forms. Les réponses viennent s'ajouter automatiquement dans un tableur Google Sheets (exportable si besoin dans Excel). Comme ça pas de risque de saisie décalée, pas possible pour les mécaniciens de consulter des informations qui ne les concernent pas et la construction de ton fichier est automatisée...

C'est une bonne idée pour certains cas mais je ne pense pas pour celui ci, car ce ne sont pas les mécaniciens qui font l'inventaire de leur caisse. C'est pour éviter qu'ils "trichent".

Je vous remercie de vos réponses!

Azounet

C'est une bonne idée pour certains cas mais je ne pense pas pour celui ci, car ce ne sont pas les mécaniciens qui font l'inventaire de leur caisse. C'est pour éviter qu'ils "trichent".

Ça n'est pas un problème, vous pouvez remplir vous même le questionnaire autant de fois que nécessaire et choisir à qui vous accordez l'accès au fichier des réponses.

Ca reste une suggestion, libre à vous d'essayer ou non !

Salut Azounet,

La ligne Dim i As Integer ne doit en aucun cas être supprimée car elle est là pour faire joli. D'ailleurs si tu la supprimes, tu constateras que le code est soudain triste à mourir

Non, plaisanterie mise à part, j'étais parti sur l'idée d'une boucle For/Next puis j'ai changé d'avis sans remarquer que cette ligne pouvait alors être supprimée impitoyablement.

Les instructions ci-dessous sont également un peu du fignolage. Essaie de les mettre en commentaire et s'il te semble qu'elles n'apportent pas grand chose, supprime-les.

Range("A1").Select

ActiveWindow.ScrollColumn = 1

ActiveWindow.ScrollRow = 1

Cordialement.

Salut Yvouille,

Je te remercie de ta réponse, et je trouvais aussi que le code était triste sans cette ligne! :p

Je passe le topic en résolu, merci encore c'est la première fois que j'utilise ce forum vous avez été parfait, quand j'aurai progressé j'espère pouvoir aider d'autres personnes à mon tour!

Ciao,

Azounet

Rechercher des sujets similaires à "macro afficher colonne fois"