Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/12/2011, 15h13   #1
Invité de passage
 
Homme Guillaume SCHMAUCH
Étudiant
Inscription : août 2011
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme Guillaume SCHMAUCH
Âge : 22
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 10
Points : 3
Points : 3
Par défaut Equation logique d'exécution de macro

Bonjour à tous !

J'ai très peu de connaissance sur excel, donc ma question risque d'être un peu ridicule pour la plupart d'entre vous. Malgré des recherches, et lecture de cet article sur ce site:
http://silkyroad.developpez.com/Exce...ionsExcel/#LIX

J'ai rien trouvé ...

Alors voici mon soucis:
J'ai 3 macros dans mon fichier excel, et je voudrais les éxécuter à partir de la lecture d'une cellule.

Pour être plus clair,
Dans la case A1 l'utilisateur va rentré 3 choix possibles: X, Y, Z.
Si il y a "X" il éxécute la macro "macro_X", si il y a "Y" la macro "macro_Y" et pour "Z" la macro "macro_Z" .... et si il y a rien ben je voudrais qu'il ne fasse rien. Mais je ne sais pas comment le faire "comprendre" à excel ...

J'ai écris deux formules qui (je pense) fonctionnent:
le "NoData" est ce que la partie qui me pose problème.

1)
=SI(ESTTEXTE(A1);macro_x;SI(ESTTEXTE(A2);macro_y;SI(ESTTEXTE(A3);macro_z;NoData)))

2)
=SI(NB.SI(A1;"*Small*"); CopyWeighingSmall;SI(NB.SI(A2;"*Medium*");CopyWeighingMedium;SI(NB.SI(A3;"*Large*");CopyWeighingLarge;NoData)))

Bref merci de votre aide, et excusez les quelques fautes qui doivent trainer sur ce topic.

Cordialement.
zakharorion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 15h18   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Tu parles d'une macro qui exécute des actions ou d'une fonction qui te renvoie un résultat.
Si c'est le premier cas, tu ne t'y prends pas de la bonne manière. Il faut que tu mettes le code suivant dans l'évènement Worksheet_Change de la feuille contenant ta cellule :
Code :
1
2
3
4
5
6
7
8
9
10
Private Sub Worksheet_Change(ByVal Target As Range)
    Select Case Target.Value
    Case "X"
        macro_x
    Case "Y"
        macro_y
    Case "Z"
        macro_z
    End Select
End Sub
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 15h31   #3
Invité de passage
 
Homme Guillaume SCHMAUCH
Étudiant
Inscription : août 2011
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme Guillaume SCHMAUCH
Âge : 22
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 10
Points : 3
Points : 3
Bonjour ZebreLoup,

Les deux formules que j'ai écrite sur mon topic, je l'ai mis dans la cellule juste en dessous (A2).

J'ai pas fait les macro, pour faire simple j'ai repris le travail d'un autre (je suis en entreprise).

Pour moi c'est une fonction qui exécute tel macro selon les cas (donc le texte rentré dans la cellule A1) et cela permet de mettre en place des valeurs par défauts dans les autres feuilles du classeur.
zakharorion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 15h42   #4
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Tu ne peux pas utiliser une formule personnalisée pour exécuter des tâches. Je n'ai pas bien compris ce que tu voulais faire exactement, mais ton approche doit être différente.
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 16h16   #5
Invité de passage
 
Homme Guillaume SCHMAUCH
Étudiant
Inscription : août 2011
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme Guillaume SCHMAUCH
Âge : 22
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 10
Points : 3
Points : 3
Je vais expliquer plus simplement:

On vas imaginer que je fais un devis automatique pour une gamme de PC. Dans un fichier excel, tu as La page de présentation (où tu choisie la gamme que tu veux) et une autre page contenant la fiche avec les caractéristiques de la gamme sélectionner. On a le choix entre ces 3 gammes:

Gamme Pro
Gamme Famille
Gamme Joueur

Tu dois rentrer ces informations dans la cellule spécifiée (A1). Donc si tu met "Gamme Pro" et que tu vas sur la seconde feuille. Tu constate que les valeurs (prix, modèles et etc) sont mis en place de manière automatique. En fonction de la réponse entrer par l'utilisateur dans la case A1 de la première feuille.

Donc je ne peux pas utiliser de formule pour cette tâche .... hum ... sachant que je ne sais pas comment on fait des macro ... je vais allé voir dans les tutos exels ...

Mais si tu es d'accord pour me donner la procédure (comme j'ai déjà le code) je ne dit pas non. Dans la cas contraire je comprend, c'est mieux d'apprendre par soi même que récupérer le travail d'un autre personne.

Merci pour tes réponses en tout cas !
zakharorion est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 16h17   #6
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Tout d'abord, il est possible que tu puisses t'en sortir avec seulement des formules. Si ce n'est pas le cas et qu'il te faut des macros, il faut passer ma solution, j'avais oublié d'ailleurs de filtrer la cellule :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row = 1 And Target.Column = 1 'Si la case de choix est en A1
        Select Case Target.Value
        Case "X"
            macro_x
        Case "Y"
            macro_y
        Case "Z"
            macro_z
        End Select
    End If
End Sub
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 16h44   #7
Invité de passage
 
Homme Guillaume SCHMAUCH
Étudiant
Inscription : août 2011
Messages : 10
Détails du profil
Informations personnelles :
Nom : Homme Guillaume SCHMAUCH
Âge : 22
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2011
Messages : 10
Points : 3
Points : 3
J'ai appliqué tes conseils, j'ai fait la macro. Maintenant je vais chercher seul comment exécuter des macros à partir d'une macro.

Merci pour ton aide ! Ce sujet est à présent résolu.

A bientôt.

Zakhar
zakharorion est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h53.


 
 
 
 
Partenaires

Hébergement Web