Lancer une macro si une cellule précise est activée

Annetoine

XLDnaute Nouveau
Bonjour à tous !

Petit "problème" excel du jour. L'intitulé de la discussion n'est pas tout à fait juste. J'ai trouvé quelques réponse sur les forum, mais aucune ne correspond vraiment à mon problème.
Voici ma feuille excel :
Lien supprimé

En gros, j'aimerai faire une macro, qui quand je clique sur une des 8 cellules en verte, me copie un tableau correspondant à chaque cellule dans le tableau de droite.

Alors je pourrait très bien faire 8 macro faisant un copier coller, mais j'aimerais alléger un peu la chose.

En résumé, chacune des 8 cellule lance la même macro, mais en fonction de celle ou je clique, ça ne copie pas la même chose.
J'ai essayé de bidouiller quelque chose avec ActiveCell, mais aucun resultat :(

Merci pour aide précieuse !!!
 

Annetoine

XLDnaute Nouveau
Re : Lancer une macro si une cellule précise est activée

Bonjour tototiti !

Je ne peux malheureusement pas trop diffuser mon fichier excel, j'en ai toutefois refais un avec une partie du tableau :)

En gros, quand je clique sur la cellule verte correspondant à "A", je veux copier toute les cellules du tableau correspondant ( Partie rose A1, A2, A3, A4, A5)

Ce nouveau tableau copié va ensuite me permettre d'incrementer un autre tableau :
Exemple : Je clique sur A, ça m'affiche le tableau de A1 à A5, et je reclique sur la case correspondante, ce qui va m'incrémenter une autre case.


Edit : Concernant le bout de code, je n'avais pas écrit grand chose...
J'avais testé un truc du genre "If ActiveCell = Range(...) then"
Je me doutais que ce n'étais pas aussi simple mais bon :)
 

Pièces jointes

  • Tableau.xlsx
    9 KB · Affichages: 62
  • Tableau.xlsx
    9 KB · Affichages: 68
  • Tableau.xlsx
    9 KB · Affichages: 67

Matheop

XLDnaute Occasionnel
Re : Lancer une macro si une cellule précise est activée

Salut le forum.

Pour vérifier si une cellule appartient à une sélection je te propose de faire comme ça. Si la cellule que tu actives est dans la plage concernée, alors tu copies dans le tableau sinon tu quittes la procédure.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    verification Target
End Sub

Sub verification(Cellule As Range)
    Dim Plage As Range
    Set Plage = Sheets("Feuil2").Range("A1:B8")
    'A1:B8 -> plage des cellules correspondant à ton tableau

    If Not Intersect(Plage, Cellule) Is Nothing Then
       ' code à exécuter
    Else
       Exit Sub
    End If
End Sub


EDIT: Cela te permet d'exécuter du code si des cellules précises de ta feuille sont activées. Maintenant que je relis le sujet, je ne suis pas sûr que ce soit exactement ce que tu cherches malgré le titre du topic.
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Lancer une macro si une cellule précise est activée

Bonjour à tous


Pas très claire, cette affaire...

Si je dis :
"En cliquant sur la cellule B2, la plage H15:I19 doit être recopiée en H3:I9. En cliquant sur la cellule B3, la plage H21:I25 doit être recopiée en H3:I9.",
ai-je compris quelque chose ?

Si oui, que doit-il se passer si je clique sur B6 ? ou sur B9 ?​


ROGER2327
#5739


Jeudi 12 Clinamen 139 (Saint Georges Dazet, poulpe au regard de soie - fête Suprême Quarte)
14 Germinal An CCXX, 3,7743h - hêtre
2012-W14-2T09:03:30Z
 

pierrejean

XLDnaute Barbatruc
Re : Lancer une macro si une cellule précise est activée

Bonjour a tous

En supposant avoir compris
 

Pièces jointes

  • Tableau(1).xls
    33.5 KB · Affichages: 138
  • Tableau(1).xls
    33.5 KB · Affichages: 134
  • Tableau(1).xls
    33.5 KB · Affichages: 140
Dernière édition:

Annetoine

XLDnaute Nouveau
Re : Lancer une macro si une cellule précise est activée

Bonjour à tous,

@Roger : Oui c'est tout à fait ça ! Les cases B6 à B9 correspondent à d'autres tableaux que je n'ai pas mis dans le fichier, mais le principe est exactement pareil.

@Pierrejean : J'ai bien ouvert le fichier, mais rien ne se passe :confused:

@Matichoux : Oui j'ai un peu essayé avec ce code mais je n'arrive pas à grand chose de concluant...
 

ROGER2327

XLDnaute Barbatruc
Re : Lancer une macro si une cellule précise est activée

Suite...


Parfait ! pierrejean a bien senti la chose (quel pied, ce nez !) : vous avez votre solution.​


ROGER2327
#5740


Jeudi 12 Clinamen 139 (Saint Georges Dazet, poulpe au regard de soie - fête Suprême Quarte)
14 Germinal An CCXX, 4,3392h - hêtre
2012-W14-2T10:24:51Z
 

Annetoine

XLDnaute Nouveau
Re : Lancer une macro si une cellule précise est activée

Wahouu alors là, je m'incline ! C'est exactement ce que dont j'avais besoin !

Je ne trouve par contre pas le code, pour le continuer aux autres tableaux (cela peut-il venir d'un problème de version excel ?) ?!

En tout cas un grand merci !
 
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Lancer une macro si une cellule précise est activée

Re...

Pour voir le code dans le classeur de pierrejean, sélectionnez l'onglet Feuil1, faites un clic-droit et choisissez Visualiser le code.


ROGER2327
#5741


Jeudi 12 Clinamen 139 (Saint Georges Dazet, poulpe au regard de soie - fête Suprême Quarte)
14 Germinal An CCXX, 4,9083h - hêtre
2012-W14-2T11:46:47Z
 

Annetoine

XLDnaute Nouveau
Re : Lancer une macro si une cellule précise est activée

J'ai du mal à comprendre le cheminement du code :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B2:C9")) Is Nothing Then
  x = Range("B" & Target.Row)
  Set c = Columns("I").Find(x, LookIn:=xlValues, lookat:=xlPart)
  If Not c Is Nothing Then
    Range("H3:M13").ClearContents
    c.CurrentRegion.Copy Destination:=Range("H3")
  Else
  MsgBox ("tableau à creer")
  End If
End If
End Sub

Je ne vois pas bien comment il choisi et copie le bon tableau :confused:
 

ROGER2327

XLDnaute Barbatruc
Re : Lancer une macro si une cellule précise est activée

Re...


J'ai du mal à comprendre le cheminement du code :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B2:C9")) Is Nothing Then
  x = Range("B" & Target.Row)
  Set c = Columns("I").Find(x, LookIn:=xlValues, lookat:=xlPart)
  If Not c Is Nothing Then
    Range("H3:M13").ClearContents
    c.CurrentRegion.Copy Destination:=Range("H3")
  Else
  MsgBox ("tableau à creer")
  End If
End If
End Sub

Je ne vois pas bien comment il choisi et copie le bon tableau :confused:
L'astuce est là :
Code:
  x = Range("B" & Target.Row)
  Set c = Columns("I").Find(x, LookIn:=xlValues, lookat:=xlPart)
En x, il place la valeur de la cellule sélectionnée.
Puis il cherche cette valeur dans la colonne I.
Si elle existe, c désigne la cellule où la valeur est trouvée : c'est le coin haut-gauche du tableau à copier.
Si elle n'existe pas, c prend la valeur Nothing.

La suite est claire :
  • Si c n'est pas nothing Nothing, il copie le tableau...
  • ...sinon il affiche un message pour dire que le tableau cherché n'existe pas.


ROGER2327
#5742


Jeudi 12 Clinamen 139 (Saint Georges Dazet, poulpe au regard de soie - fête Suprême Quarte)
14 Germinal An CCXX, 5,2619h - hêtre
2012-W14-2T12:37:43Z
 

Discussions similaires

Statistiques des forums

Discussions
312 377
Messages
2 087 745
Membres
103 658
dernier inscrit
Laurent2017