VBA - Structure en boucle

Fermé
Cat&Dom Messages postés 30 Date d'inscription jeudi 18 janvier 2007 Statut Membre Dernière intervention 13 juin 2010 - 24 sept. 2007 à 13:15
 Cat&Dom - 25 sept. 2007 à 13:24
Bonjour,

Je travaille sur excel 2000

Je débute en VBA, j'ai fait une formation de 3 jours, mais j'ai beaucoup de mal à trouver la bonne piste.

Voilà, j'ai créé :

- Une fiche

- Un tableau à double entrée :

En-tête de colonne : produits
En-tête de lignes : salariés

A partir de ce tableau, je voudrais générer une fiche par salarié sur laquelle serait recencé tous les produits que le salarié utilise. Ma fiche contient des formules qui vont chercher les caractéristiques des produits (code produit, Phrase de risque, date de début d'utilisation....) et les coordonnées du salarié (prénom, date de d'entrée, poste occupé....)

Je pense qu'il faut que je dois faire appel à une structure en boucle, mais laquelle ?

Je suis dans le flou le plus complet.

Merci d'avance à tous ceux et celles qui tenteront de m'aider.

Catherine

5 réponses

ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 50
24 sept. 2007 à 15:20
Bonjour,

Est ce que ton fichier à cette structure ?

            | Produit | Produit | Produit |
            |----------|----------|----------|
Salarié | Tutu     | Tata     | Toto     |
            |----------|----------|----------|
            |Prod11  | Prod21 | Prod31 |
            |----------|----------|----------|
            |Prod11  | Prod21 | Prod31 |
            |----------|----------|----------|
            |Prod11  | Prod21 | Prod31 |
            |----------|----------|----------|
0
Bonsoir,

Ce n'est pas tout à fait ça. J'ai fait des copies d'écran que j'ai enregistrer dans photoshop adobe en format jpeg mais je n'arrive pas à les envoyer par le biais d'HIBOOX. Je pense que ce serait plus explicite.

As-tu un autre site par lequel je pourrais passer ?

D'avance merci.

Catherine
0
Bonsoir,

[url=https://www.hiboox.com][img]http://images2.hiboox.com/vignettes/3907/q0nid2wv.jpg[/img][/url]

[url=https://www.hiboox.com][img]http://images2.hiboox.com/vignettes/3907/efymxzkp.jpg[/img][/url]

Voilà, apparemment, j'ai réussi à mettre mes copies d'écran, j'espère que ce sera suffisamment claire.

Voilà, je voudrai créer un code qui sélectionne le premier salarié de la colonne A du tableau, ensuite se déplace horizontalement et chaque fois qu'il trouve un "X", sélectionne l'entête de colonne et vient la copier dans la première ligne de la fiche "salarié". Ensuite, créé une nouvelle ligne chaque fois qu'il retrouve une croix sur la ligne du salarié concerné jusqu'a ce que tous les produits soient recensé sur la fiche individuelle.

Une fois la fiche du premier salarié renseignée, il créé une nouvelle feuille pour le suivant, etc...

J'espère que quelqu'un pourra m'aider.

Merci d'avance

Cordialement. Catherine
0
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 50
24 sept. 2007 à 21:52
Bonsoir,

je viens de regarder tes documents. Il te faudra 2 boucles :

- Une pour parser tes salariés
- Une pour parser chaque produit marqué d'un "X" pour chaque salarié parsé.

Te faut il plus de précision ?
0
Bonjour,

J'ai réfléchi, je vais un peu simplifier la tâche, je vais dans un premier temps générer une seule fiche à la fois.

Ce qui me permettra d'avoir recours à une seule boucle et je pense que ce sera suffisant.J'ai donc commencé par une Inputbox pour saisir le nom du salarié.

Par contre, quelle instruction:
WHILE...WEND
DO...LOOP
FOR....NEXT
FOR EACH.....NEXT

Mes 3 jours de formation date du mois de juin et je n'ai pas eu le temps de travailler dessus (déménagement, orientation des enfants....) ça va être difficile de reprendre. Je suis complètement perdue.

Si tu peux me mettre sur la bonne piste, ce sera un gain de temps car il y a du boulot.

Merci d'avance
Catherine
0
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 50
25 sept. 2007 à 09:53
Bonjour,

Dans ton cas tu peux utiliser la boucle do while :

Do While ValeurCelluleSalarié <> ""  '1ère boucle pour lire les salariés : la boucle s'arrete lorsque la celulle est vide
        
        'Créer la fiche pour le salarié trouvé

        Do While ValeurCelluleEnteteProduit <> "" '2ème boucle pour lire les produits : la boucle s'arrete lorsque la celulle est vide
                                                                            ' la condition est faite sur l'entête de colonne car ttes les colonnes sont remplies
                                                                            'ce qui n'est pas le cas pour les cellules marquant la présence ou non d'un produit 

         'incrementer un indice pour aller sur la colonne suivante
         
         if ValeurCelluleProduit = "X" Then
             'Recupérer l'intitulé
             
             'Créer une ligne dans la fiche avec valeur de l'intitulé produit
            
         End If

     Loop

     'incrementer un indice pour aller sur la ligne suivante

Loop


Cela te convient il ?
0
ShaBoo Messages postés 392 Date d'inscription mercredi 12 septembre 2007 Statut Membre Dernière intervention 5 septembre 2009 50
25 sept. 2007 à 11:10
Bonjour,

J'ai mis un fichier excel en ligne :

http://www.cijoint.fr/cij117041863626750.xls

Il contient une macro que tu pourras faire tourner en mode debug. Le Classeur est proche de tes conditions. Tu n'auras qu'à modifier la macro pour que cela corresponde à tes besoins.

En espérant avoir répondu à tes attentes.

@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour,

Je viens de rentrer et je suis très agréablement surprise par ce que tu m'as envoyé. C'est super, je vais détailler tout ça et essayer de l'adapter exactement à ce que je souhaite, à savoir deux solutions :

1 - Je lance une seule fiche par le biais d'une inputbox lorsque qu'un nouveau salarié arrive ou qu'un salarié quitte la société

2 - Je lance automatiquement la totalité des fiches sans renseignement par le biais de MsgBox car j'ai environ 60 fiches à lancer chaque fois qu'un produit est supprimé ou ajouté.

Un grand merci et peut-être à bientôt car il serait fort étonnant que je m'en sortes complètement seule, je vais probablement encore faire appel aux connaissances de personnes comme toi. Je retourne bosser.

Cordialement Catherine
0