Fonction excel : selection et copie de cellules

Bonjour,

J’ai comme qui dirait besoin d’aide…
Je dois créer une macro sous excel qui me permettrait d’automatiser une extraction de notes.
Je m’explique… :

J’ai un fichier excel avec 2 feuilles, la première contient un bulletin type, et la seconde une liste d’étudiants avec toutes leurs moyennes.
Ce que je voudrais faire (si c’est possible…), c’est créer une macro qui remplacerai automatiquement tous les champs du bulletin (cad nom + prénom + notes).

Les données “à extraire” sont toutes sur la même ligne, avec une ligne par étudiant.

Actuellement j’insère plus ou moins manuellement les notes sur le bulletin, cad que par exemple pour le champs “nom” de l’étudiant DUPONT (correspondant à la cellule F10 de la feuille 1) je copie la cellule C12 de la feuille 2. Dans la celle F10 de la feuille 1 j’inscris donc “=Feuil2!C12”.
pour le champs prénom, sa donne “=Feuil2!D12”

Pour l’étudiant MARTIN, ça donnerait “=Feuil2!C13” pour le nom et “=Feuil2!D13” pour le prénom.
Pour le suivant “=Feuil2!C14” & “=Feuil2!D14”
etc…

Je ne sais pas si je suis assez explicite, mais en gros je voudrais qu’en éxecutant la macro, les cellules de la feuille 1 (du bulletin donc) soient remplacées par celles en dessous des cellules sources précédentes (celles de la feuille2).

J’ai, pour chaque étudiant, 18 cellules à recopier, c’est donc assez fastidieux…
J’espère avoir bien décrit mon problème, et vous remercie d’avance pour votre aide!!
Edité le 14/04/2008 à 15:40

Tu veux générer automatiquement les 18 bulletins à la suite ou simplement remplir ta trame en fonction d’un nom que tu choisis (manuellement) ?

Dans le second cas, pas besoin de macro
C’est la fonction RechercheV() qui va faire le travail pour toi
Par exemple, pour la cellule du bulletin où tu souhaites avoir le prénom, tu vas mettre quelque chose du genre
=RechercheV(B6;Feuil2!A1:F18;2;Faux)

B6 -> la cellule qui contient le nom à traiter
A1:F18 -> la zone “utile” (noms + notes) de ta feuille de référence
2 -> la colonne qui contient le prénom (par rapport à la colonne Nom qui DOIT être la première, et triée par ordre alphabétique)

Pour les autres données, idem, en remplaçant 2 par 3,4 etc.

Bien sûr, pour que ce soit pratique, il faudrait remplacer la cellule Nom par une liste déroulante, mais chaque chose en son temps.

Et si tu veux une édition automatique de l’ensemble des bulletins, c’est exactement la même chose, à ceci près que tu ajoutes une macro qui fait une boucle sur la première colonne de ta feuille 2

Merci pour ta réponse.
En fait il n’y a pas 18 bulletins mais près de 200… 18 c’est le nombre de champs à modifier par bulletin.

Je n’arrive pas à avoir comment utiliser ta formule.
Voici une capture de la feuille1 et une de la feuille2

(images enlevées)

Les champs en gras de la feuille 1 doivent être remplacés par les champs en gras de la feuille2.
Effectivement si je pouvais faire une liste déroulante dans le champs nom et que ça remplisse tous les champs ça serait bien, mais mes compétences dans ce domaine sont… très mauvaises…

Merci à toi
Edité le 14/04/2008 à 15:38

D’après ce que je vois, le nom apparaît en F10 et le prénom en R10.
Pour le moment, ta zone “utile” sur la feuille2 est C12:N13
Donc pour le prénom, la formule (en R10) va être
=RechercheV(F10;Feuil2!C12:N13;2;Faux)
Pour la première moyenne (en E21)
=RechercheV(F10;Feuil2!C12:N13;4;Faux)

etc.

Pour la liste déroulante, ce n’est pas compliqué, mais faut d’abord que le reste fonctionne.
En particulier, si tu as 200 entrées à traiter, il risque d’y avoir d’abord des modifications à faire pour lever les ambigüités sur les homonymes …

Parfait, ça marche!
Quand je vois la charge de travail en moins que ça va représenter…! Merci!

Pour la liste déroulante, j’ai réussi à mettre ça en place. Pour l’instant je n’ai pas d’homonymes, donc ça devrait être bon. Dans le cas où j’en aurai à l’avenir, que me conseillerai tu de faire?

Merci encore!!

Il faut que tu rajoutes une colonne supplémentaire dans ta feuil2, en premiere colonne, et avec comme contenu nom+prénom
Une simple formule à recopier sur toute la colonne, donc facile à faire.
Par contre, ca va te provoquer un décalage pour tous tes rechercheV, d’où l’intérêt de le faire dès le début.

Ensuite, tu baseras ta liste déroulante sur cette nouvelle colonne, et tu rempliras la colonne Nom sur le même modèle que les autres données.
Il faudra aussi que tu rendes ta liste déroulante non imprimable

D’accord.
Je vais m’occuper de mettre en forme tout cela demain.
Merci pour ton aide, c’est vraiment sympa et ça m’enlève une charge de travail dont tu peux te douter!

Merci & à bientôt!