Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Extraire une donnée dans une autre feuille Excel

  • Initiateur de la discussion Initiateur de la discussion MlleDaria
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

MlleDaria

Guest
Bonjour,

Débutante en Excel, je souhaite créer une macro répondant aux cahier de charges suivants :

Dans l'onglet "HISTORIQUE" je dispose d'une liste d'article. A chaque article, je souhaite associer une catégorie/famille d'article.

Cette classification des articles se trouve dans l'onglet "DATA" (correspond une espèce de base de données).
L'algorithme est le suivant :

Dans "HIstorique"
Pour la première ligne où la colonne catégorie est vide
Je copie la valeur NomArticle

Dans "DATA"
Je recherche dans la colonne A la valeur "NomArticle"
Quand trouvée, j'extrais le numéro de la ligne Lig
Ensuite, je regarde dans la colonne B (Catégorie) la valeur à la ligne Lig.
J'enregistre cette valeur

Dans l'onglet "Historique"
Je copie la valeur Categorie article à la ligne NomArticle correspondant.


J'avais écrit ce code là : mais ça ne fonctionne pas. Mon gros problème est le switch entre les onglets

Sub Categorie()

Sheets("HISTORIQUE").Select
k = 4 'correspond à la première ligne de mon tableau dans l'onglet Historique
Do While Range("b" & k).Value <> ""
k = k + 1
Exit Do

Worksheets("DATA").Activate
f = 1
Do While Range("a" & f).Value <> Worksheets("HISTORIQUE").Range("a" & k)
f = f + 1
Exit Do

Worksheets("HISTORIQUE").Activate
Worksheets("HISTORIQUE").Range("b" & k).Value = Worksheets("DATA").Range("d" & f).Value

Loop

Loop

End Sub

Mais je ne comprends pas. rien ne se passe.

Pouvez-vous m'aider s'il vous plait?

En vous remerciant,

Cordialement.

Mlle Daria
 
Re : Extraire une donnée dans une autre feuille Excel

bonjour MleDaria

A tester:

Code:
Sub Categorie()

Sheets("HISTORIQUE").Select
k = 4 'correspond à la première ligne de mon tableau dans l'onglet Historique
Do While Range("b" & k).Value <> ""
k = k + 1
Exit Do

Worksheets("DATA").Activate
f = 1
Do While Range("a" & f).Value <> Worksheets("HISTORIQUE").Range("a" & k)
f = f + 1
Exit Do
Loop

Worksheets("HISTORIQUE").Activate
Worksheets("HISTORIQUE").Range("b" & k).Value = Worksheets("DATA").Range("d" & f).Value


Loop

End Sub
 
Re : Extraire une donnée dans une autre feuille Excel

Bonjour,
j'ai un souci avec le code : il ne se passe rien. Aucun message d'erreur. Rien.

Je suis perdue :s
 
Re : Extraire une donnée dans une autre feuille Excel

Bonjour Mlle Daria,

Je pense que la chose peut se faire très bien sans macro à l'aide des fonction INDEX et EQUIV.

Après si tu veux utiliser la macro : vérifie bien tes indices et boucles à l'aide du mode "pas à pas" du débugger VBA.

Cordialement.
 
Re : Extraire une donnée dans une autre feuille Excel

Re

Voici la macro corrigée
Par contre je ne sais pas ce que tu en attends

Code:
Sub Categorie()
Sheets("HISTORIQUE").Select
k = 4 'correspond à la première ligne de mon tableau dans l'onglet Historique
Do While Range("b" & k).Value <> ""
k = k + 1
Exit Do
Loop
Worksheets("DATA").Activate
f = 1
Do While Range("a" & f).Value <> Worksheets("HISTORIQUE ").Range("a" & k)
f = f + 1
Exit Do
Loop
Worksheets("HISTORIQUE").Activate
Worksheets("HISTORIQUE").Range("b" & k).Value = Worksheets("DATA").Range("d" & f).Value
End Sub

Ps: Avec un fichier exemple et une petite explication de ce que tu souhaites il serait possible de t'orienter vers une meilleure solution soit par formule soit en vba
 
Dernière édition:
Re : Extraire une donnée dans une autre feuille Excel

La fonction INDEX sert à retourner une valeur depuis une colonne (ou ligne) à partir d'un numéro.

Schématiquement :
colonne A: (Cellules A1 à A3)
Pomme
Poire
Peche

INDEX(A1:A3;1) retourne Pomme, INDEX(A1:A3;2) retourne Poire et INDEX(A1:A3;3) Peche.

EQUIV sert à retourner la place d'une valeur cherchée au sein d'un tableau.
EQUIV("Pomme";A1:A3) = 1 , EQUIV("Poire";A1:A3) = 2 et EQUIV("Peche";A1:A3) = 3 \o/

Dans ta feuille historique, toute ta colonne CATEGORIE sera remplie de la formule : INDEX(DATA!B1:B10;EQUIV(A1;DATA!A1;A10;0))
Avec B1:B10 le champ contenant tes catégories dans la feuille DATA, A1:A10 celui contenant les noms. et A1 cellule de l'onglet HISTORIQUE contenant le nom dont tu recherches la catégorie.

Cette formule cherchera le nom de la feuille Historique dans la feuille data pour renvoyer la catégorie associée (toujours dans la feuille data). C'est ce que tu cherches à faire je pense.

N'hésites pas à regarder l'aide d'excel sur ces formules, elle est bien faite. 🙂
 
Re : Extraire une donnée dans une autre feuille Excel

j'ai un souci pour envoyer le fichier Excel. il semblerait qu'il soit assez gros (85Ko). Y'aurait-il un autre moyen de vous le transmettre?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
326
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…