Macro utilisant une cellule activée par l'utilisateur

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 !

snatch_snatch

XLDnaute Nouveau
Bonjour,

Je bloque actuellement sur une macro que je voudrais réaliser.

Je souhaite créer la démarche suivante:
-L'utilisateur active une cellule,
-Il appuie sur un bouton,
-Des modifications sont apportées :
- à la cellule sélectionnée précédemment par l'utilisateur
- à certaines cellules environnante de la cellule activée précédemment.

Exemple:
L'utilisateur active la cellule C2, appuie sur un bouton.
-La cellule C2 est remplie en rouge, avec le message "Lot de 12"
-Les cellules C3, C4, C5,..., C13 passent de la hauteur quelles avaient initialement à une hauteur de 0 pixels.

Le plus adapté à ma situation serait un bouton "interrupteur" à deux positions:
-La première nommée :"lot identique", conduit à l'exécution de l'exemple que j'ai cité.
-La seconde nommée : "lot différent", conduit à l’exécution inverse de l'exemple cité: les 11 cellules se trouvant en dessous de la cellule C2 ont une hauteur de 15 par exemple.

J'ai besoin que la macro fonctionne en fonction de la cellule activée par l'utilisateur car il y a un grand nombre lots, donc beaucoup de situations citées dans l'exemple.

Par avance je vous remercie de vos réponses.
 
Re : Macro utilisant une cellule activée par l'utilisateur

Bonjour Snatch_snatch et bienvenu, bonjour le forum,

En pièce jointe une proposition VBA qui réagit au double-clic. Le premier double-clic colore en rouge et masque, le second enlève la couleur et affiche les lignes...
Si tu avais daigné mettre un fichier exemple j'aurais pu te faire quelque chose de mieux adapté...
Le code :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True 'évite le mode édition lié au double-clic
Select Case Target.Interior.ColorIndex 'agit en fonction de la couleur de la cellule double-cliquée
    Case Is = xlNone 'cas : aucune couleur
        Target.Interior.ColorIndex = 3 'colore la cellule en rouge
        Target.Value = "Lot de 12" 'écrit "Lot de 12" dans la cellule
        Rows(Target.Row + 1 & ":" & Target.Row + 11).RowHeight = 0 'masque les 11 lignes en dessous de la cellule double-cliquée
    Case Is = 3 'cas : couleur rouge
        Target.Interior.ColorIndex = xlNone 'enlève la couleur
        Target.Value = "" 'efface le texte de la cellule double-cliquée
        Rows(Target.Row + 1 & ":" & Target.Row + 11).AutoFit 'hauteur automatique des 11 lignes en dessous de la cellule
End Select 'fin de l'action en fonction de...
End Sub
Le fichier :
 

Pièces jointes

Re : Macro utilisant une cellule activée par l'utilisateur

Merci pour ta réponse Robert.

La solution du double clic est une bonne idée néanmoins, aurais-tu une solution avec macro (dans module et non dans classeur) et bouton.

Cette fois je daigne mettre un fichier exemple; en pièce jointe une simplification de mon tableau de départ avec des transporteurs qui sont gratuit (cf fichier).

S'il n'y a pas la solution avec cellule activé puis exécution de macro en appuyant sur un bouton - ou l'inverse d'ailleurs: on appuie sur le bouton, la macro attend que l'utilisateur active une cellule puis exécute la modification des lignes - , ce n'est pas grave, j'utiliserai ta 1ère solution.
 

Pièces jointes

Re : Macro utilisant une cellule activée par l'utilisateur

Bonjour Snatch_snatch, bonjour le forum,

Franchement, je trouve le double-clic bien plus approprié à ton probleme. Puisque tu dois impérativement sélectionner une cellule avant de lancer le code, il me semble bien plus rapide et simple de double-cliquer dessus plutôt que de la sélectionner puis cliquer sur un quelconque bouton...
Dans la pièce jointe, double-clique une première fois dans B8 ou B32 et refait la même chose juste après. En fonction de la couleur de la cellule ça masque/affiche les lignes...

Toutefois, si tu y tiens vraiment on peut aussi faire avec un bouton bascule (ToggleButton) ou avec deux boutons (CommandButtons). Dis-nous ce que tu préfère et on adapteras le code...
 

Pièces jointes

Re : Macro utilisant une cellule activée par l'utilisateur

Bonjour,
Désolé pour la réponse tardive, mais je n'ai pas internet dans mon appartement et la semaine dernière c'était semaine férié en Chine.

Oui sur cet exemple c'est vrai que la solution du double click est plutôt bien adaptée.
Je vais utiliser cette solution.

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

Retour