Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Appeler macro par variable

18 réponses
Avatar
garnote
Bonjour le monde,

La cellule E12 contient la liste :
Autriche
Belgique
France
J'ai aussi trois macros nommées :
AAutriche
ABelgique
AFrance
Je tente alors d'appeler une de ces macros
de la façon suivante :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$12" Then
nom = "A" & Target
Call nom
End If
End Sub
mais ça ne fonctionne pas :-(
Comment contourner cet affreux dilemme ?

Serge

8 réponses

1 2
Avatar
garnote
Allez loup yâ !

Merci pour le Application.Rhum :-)
Mais ai trouvé quelque chose de plus simple
qui rend superfétatoire le Select Case et
Application.Run (elle servira une autre fois).
J'ai des cartes emplilées de mêmes dimensions
nommées : Autriche, Belgique, Espagne, France ...
et j'ai la liste (Validation) des noms en E12 :

Module standard :
Public nom$
Sub Affiche()
ActiveSheet.Shapes(nom).ZOrder msoBringToFront
End Sub

Module de feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$12" Then
nom = Target
Affiche
End If
End Sub

Commence à aimer ça, moé, le VBA :-)))

Serge


"Daniel.M" a écrit dans le message de
news: #2I7df#
Salut Sergio,

Il te faut trouver une méthode qui prend une string et comprend qu'on
appelle la

procédure correspondante. Cette méthode existe (Application.Run).

Private Sub Worksheet_Change(ByVal Target As Range)
Dim nom$
If Target.Address = "$E$12" Then
nom = "A" & Target
Application.Run nom
End If
End Sub

Salutations,

Daniel M.




Avatar
Daniel.M
Serge,

Mais ai trouvé quelque chose de plus simple
qui rend superfétatoire le Select Case et
Application.Run (elle servira une autre fois).
J'ai des cartes emplilées de mêmes dimensions
nommées : Autriche, Belgique, Espagne, France ...
et j'ai la liste (Validation) des noms en E12 :



Juste une autre idée comme ça, tu pourrais avoir une seule carte et choisir d'y
insérer l'image de tel ou tel pays dépendant de la valeur E12.

Les fichiers images seraient alors dans le même répertoire que ton classeur,
MAIS PAS DANS ton classeur (ou plutôt une seule à la fois).

Dans le cas où tu as beaucoup de pays (N > 30), cela me semble plus facile à
gérer.

Pour rajouter un pays: avoir l'image dans un fichier et rajouter le nom dans la
liste de validation (E12). Pas de cadre à rajouter à s'assurer de sa visibilité
etc.

C'était juste une suggestion.

Salutations,

Daniel M.

Avatar
garnote
Quelque chose du genre ?

Sub InsèreCarte()
'nom = "Autriche"
[a1].Select
ActiveSheet.Pictures.Insert("D:Mes documents
Mes imagesAutriche.bmp")
Range("E1").Select
End Sub

Mais alors, comment mettre «nom» dans le chemin
de mes images ?

Serge


"Daniel.M" a écrit dans le message de
news: #wfP38#
Serge,

Mais ai trouvé quelque chose de plus simple
qui rend superfétatoire le Select Case et
Application.Run (elle servira une autre fois).
J'ai des cartes emplilées de mêmes dimensions
nommées : Autriche, Belgique, Espagne, France ...
et j'ai la liste (Validation) des noms en E12 :



Juste une autre idée comme ça, tu pourrais avoir une seule carte et
choisir d'y

insérer l'image de tel ou tel pays dépendant de la valeur E12.

Les fichiers images seraient alors dans le même répertoire que ton
classeur,

MAIS PAS DANS ton classeur (ou plutôt une seule à la fois).

Dans le cas où tu as beaucoup de pays (N > 30), cela me semble plus facile
à

gérer.

Pour rajouter un pays: avoir l'image dans un fichier et rajouter le nom
dans la

liste de validation (E12). Pas de cadre à rajouter à s'assurer de sa
visibilité

etc.

C'était juste une suggestion.

Salutations,

Daniel M.





Avatar
garnote
Avoir trouvé :

Sub InsèreCarte()
nom = "France"
[a1].Select
ActiveSheet.Pictures.Insert ("D:Mes documentsMes images" & nom &
".bmp")
[e1].Select
End Sub

Serge

"garnote" a écrit dans le message de news:
Xf8Wb.30610$
Quelque chose du genre ?

Sub InsèreCarte()
'nom = "Autriche"
[a1].Select
ActiveSheet.Pictures.Insert("D:Mes documents
Mes imagesAutriche.bmp")
Range("E1").Select
End Sub

Mais alors, comment mettre «nom» dans le chemin
de mes images ?

Serge


"Daniel.M" a écrit dans le message de
news: #wfP38#
Serge,

Mais ai trouvé quelque chose de plus simple
qui rend superfétatoire le Select Case et
Application.Run (elle servira une autre fois).
J'ai des cartes emplilées de mêmes dimensions
nommées : Autriche, Belgique, Espagne, France ...
et j'ai la liste (Validation) des noms en E12 :



Juste une autre idée comme ça, tu pourrais avoir une seule carte et
choisir d'y

insérer l'image de tel ou tel pays dépendant de la valeur E12.

Les fichiers images seraient alors dans le même répertoire que ton
classeur,

MAIS PAS DANS ton classeur (ou plutôt une seule à la fois).

Dans le cas où tu as beaucoup de pays (N > 30), cela me semble plus
facile


à
gérer.

Pour rajouter un pays: avoir l'image dans un fichier et rajouter le nom
dans la

liste de validation (E12). Pas de cadre à rajouter à s'assurer de sa
visibilité

etc.

C'était juste une suggestion.

Salutations,

Daniel M.









Avatar
Modeste
;-)))
Tsss...tssss
Serge !!!
Quelque chose du genre ?

NomImage="Autriche"
FicImage="D:Mes documentsMes images" & NomImage & ".bmp"

puis ActiveSheet.Pictures.Insert FicImage

allez un rhum pour moi....
@+

-----Message d'origine-----
Quelque chose du genre ?

Sub InsèreCarte()
'nom = "Autriche"
[a1].Select
ActiveSheet.Pictures.Insert("D:Mes documents
Mes imagesAutriche.bmp")
Range("E1").Select
End Sub

Mais alors, comment mettre «nom» dans le chemin
de mes images ?

Serge


"Daniel.M" a écrit dans
le message de

news: #wfP38#
Serge,

Mais ai trouvé quelque chose de plus simple
qui rend superfétatoire le Select Case et
Application.Run (elle servira une autre fois).
J'ai des cartes emplilées de mêmes dimensions
nommées : Autriche, Belgique, Espagne, France ...
et j'ai la liste (Validation) des noms en E12 :



Juste une autre idée comme ça, tu pourrais avoir une
seule carte et


choisir d'y
insérer l'image de tel ou tel pays dépendant de la
valeur E12.



Les fichiers images seraient alors dans le même
répertoire que ton


classeur,
MAIS PAS DANS ton classeur (ou plutôt une seule à la
fois).



Dans le cas où tu as beaucoup de pays (N > 30), cela me
semble plus facile


à
gérer.

Pour rajouter un pays: avoir l'image dans un fichier et
rajouter le nom


dans la
liste de validation (E12). Pas de cadre à rajouter à
s'assurer de sa


visibilité
etc.

C'était juste une suggestion.

Salutations,

Daniel M.





.





Avatar
garnote
La suite, c'est d'annihiler l'image présente
avant d'installer la nouvelle !
Le rhum, c'est pour beaucoup plus tard :-)

Serge

"Modeste" a écrit dans le message de
news: e27001c3effd$71a1f670$
;-)))
Tsss...tssss
Serge !!!
Quelque chose du genre ?

NomImage="Autriche"
FicImage="D:Mes documentsMes images" & NomImage & ".bmp"

puis ActiveSheet.Pictures.Insert FicImage

allez un rhum pour moi....
@+

-----Message d'origine-----
Quelque chose du genre ?

Sub InsèreCarte()
'nom = "Autriche"
[a1].Select
ActiveSheet.Pictures.Insert("D:Mes documents
Mes imagesAutriche.bmp")
Range("E1").Select
End Sub

Mais alors, comment mettre «nom» dans le chemin
de mes images ?

Serge


"Daniel.M" a écrit dans
le message de

news: #wfP38#
Serge,

Mais ai trouvé quelque chose de plus simple
qui rend superfétatoire le Select Case et
Application.Run (elle servira une autre fois).
J'ai des cartes emplilées de mêmes dimensions
nommées : Autriche, Belgique, Espagne, France ...
et j'ai la liste (Validation) des noms en E12 :



Juste une autre idée comme ça, tu pourrais avoir une
seule carte et


choisir d'y
insérer l'image de tel ou tel pays dépendant de la
valeur E12.



Les fichiers images seraient alors dans le même
répertoire que ton


classeur,
MAIS PAS DANS ton classeur (ou plutôt une seule à la
fois).



Dans le cas où tu as beaucoup de pays (N > 30), cela me
semble plus facile


à
gérer.

Pour rajouter un pays: avoir l'image dans un fichier et
rajouter le nom


dans la
liste de validation (E12). Pas de cadre à rajouter à
s'assurer de sa


visibilité
etc.

C'était juste une suggestion.

Salutations,

Daniel M.





.





Avatar
Daniel.M
Sergio,

Il vaut mieux changer la RÉFÉRENCE à l'image plutôt que d'insérer et détruire
l'ancienne.
La macro EssaiChgImage fait varier l'image de Rectangle 1 (c'est une Shape)
selon le contenu de A1. L'intérêt de l'avoir dans une shape est de contrôler ses
dimensions (hauteur, largeur) peu importe celles de l'image.

Sub chgImage(NomImage As String)
With ActiveSheet.Shapes("Rectangle 1")
.Fill.UserPicture ="D:Mes documentsMes images" & NomImage & ".bmp"
End With
End Sub

Sub essaiChgImage()
chgImage Range("A1")
End Sub


Tu pourras adapter facilement pour inclure dans une macro événementielle.
Ensuite, tu pourrais aussi mettre la liste des pays dans une plage (LesPays) et,
en A1 (ou ailleurs) mettre Données/Validation Liste =LesPays.

Maintenant! Le rhum.

Salutations,

Daniel M.

"garnote" wrote in message
news:cW8Wb.30615$
La suite, c'est d'annihiler l'image présente
avant d'installer la nouvelle !
Le rhum, c'est pour beaucoup plus tard :-)

Serge

"Modeste" a écrit dans le message de
news: e27001c3effd$71a1f670$
;-)))
Tsss...tssss
Serge !!!
Quelque chose du genre ?

NomImage="Autriche"
FicImage="D:Mes documentsMes images" & NomImage & ".bmp"

puis ActiveSheet.Pictures.Insert FicImage

allez un rhum pour moi....
@+

-----Message d'origine-----
Quelque chose du genre ?

Sub InsèreCarte()
'nom = "Autriche"
[a1].Select
ActiveSheet.Pictures.Insert("D:Mes documents
Mes imagesAutriche.bmp")
Range("E1").Select
End Sub

Mais alors, comment mettre «nom» dans le chemin
de mes images ?

Serge


"Daniel.M" a écrit dans
le message de

news: #wfP38#
Serge,

Mais ai trouvé quelque chose de plus simple
qui rend superfétatoire le Select Case et
Application.Run (elle servira une autre fois).
J'ai des cartes emplilées de mêmes dimensions
nommées : Autriche, Belgique, Espagne, France ...
et j'ai la liste (Validation) des noms en E12 :



Juste une autre idée comme ça, tu pourrais avoir une
seule carte et


choisir d'y
insérer l'image de tel ou tel pays dépendant de la
valeur E12.



Les fichiers images seraient alors dans le même
répertoire que ton


classeur,
MAIS PAS DANS ton classeur (ou plutôt une seule à la
fois).



Dans le cas où tu as beaucoup de pays (N > 30), cela me
semble plus facile


à
gérer.

Pour rajouter un pays: avoir l'image dans un fichier et
rajouter le nom


dans la
liste de validation (E12). Pas de cadre à rajouter à
s'assurer de sa


visibilité
etc.

C'était juste une suggestion.

Salutations,

Daniel M.





.









Avatar
Daniel.M
Oups,

Dans la sub chgImage(), il y eu erreur en changeant le répertoire pour simuler
le tien

Le bon code:

Sub chgImage(Nom As String)
ActiveSheet.Shapes("Rectangle 1").Fill.UserPicture _
"D:Mes documentsMes images" & Nom & ".bmp"
End Sub

Daniel M.
1 2