VBE excel (zone de liste modifiable)

Résolu
23Romain23 Messages postés 2 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 17 mars 2008 - 13 mars 2008 à 17:54
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 - 17 mars 2008 à 10:45
Bonjour tout le monde,

je vous explique mon problème et merci à ceux qui voudront m'aider.

Dans un fichier excel, il y a plusieurs feuilles qui représentent des performances de diverses machines. Pour simplifier, on dit que ces feuilles se nomment « machine A » « machine B » etc…
 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>

Je voudrais créer une zone de liste modifiable dans une nouvelle feuille « simulation ». Cette liste reprendra les noms des différentes feuilles existantes (machine A ; machine B ; etc…).

 

L’objectif est que : en cliquant sur la machine A dans la liste modifiable, une macro copie la feuille entière correspondant à la machine A dans la feuille « simulation ».

 

Ainsi je pourrais réaliser des simulations sur ce nouvel onglet.

 

Ensuite, en cliquant sur la machine B dans la liste, la macro efface les données de la feuille « simulation » puis copie à nouveau la feuille machine B dans l’onglet « simulation ».

 

M’avez-vous compris ? et pouvez-vous m’éclaircir dans le code que je pourrais taper dans vbe.

 

Merci beaucoup

4 réponses

alosamoelle Messages postés 129 Date d'inscription jeudi 28 octobre 2004 Statut Membre Dernière intervention 23 mai 2009 1
13 mars 2008 à 19:26
Bonjour pour copier tu fais tout simplement un
  Sheets("Machine a").Select
    Cells.Select
    Selection.Copy
    Sheets("simulation ").Select
    ActiveSheet.Paste

Voila bien sur tu fais une petite interface ou tu peux choisir la feuille que tu veux importer
3
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
14 mars 2008 à 15:45
Salut,
Pour commencer par le début, il te faut lister dans une zone de liste les noms des feuilles
Pour cela tu va créer un Userform et par une bloucle ayant pour fin Sheets.count tu va insérer le nom des feuilles dans la zone de liste du Userform

A la validation d'un nom dans la liste, tu appliqueras le code de BonDansUnPotAuFeu (j'l'm bien 7 la)

N'oublie pas de programmer soit en début de code soit en fin le nettoyage de la feuille "Simulation"

Juste au cas ou:
Le Userform tu pourras le créer à partir de
Macro/Visual Basic Editor
Insertion/Userform

Bon courage<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /??><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"> <v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype> Cliquer "Réponse Acceptée"
Partageons Notre Savoir & Nos Acquis - JML
3
23Romain23 Messages postés 2 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 17 mars 2008
17 mars 2008 à 10:25
Bonjour, et merci tout d’abord pour votre aide.


 <?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /??>


Je viens de créer un userform dans lequel j’ai crée un combobox.


 


Mais, étant débutant, je ne connais pas le code se terminant par sheets.count. C’est la même chose pour le code de la validation.


 


Comment lui dire ‘en cliquant sur « machine A » tu copies l’onglet « machine A » etc….’ ?


Merci d’avance pour votre aide,
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
17 mars 2008 à 10:45
Oui mais la il va falloir que tu cherches un peu dans les supports et autres bouquins de VBA

Pour ta 1ère question une boucle du type
    For I= 1 To Sheets.Count
        MonUseForm.MaListeDeroulante.Add Sheets(I).Name
   Next I

Pour ta 2ème question "Comment lui dire 'en cliquant sur « machine A » ..." la réponse t'a été donnée par MêmeSiCestBonAttentionAuPrion
Ce code s'exécutera par la pression de la souris sur le bouton que tu auras ajouté dans ton Userform
<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" /??><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??><o:lock v:ext="edit" aspectratio="t"></o:lock> Cliquer "Réponse Acceptée"
Partageons Notre Savoir & Nos Acquis - JML
0
Rejoignez-nous