Extraire une valeur d'un tableau
Fermé
Walles
-
18 juil. 2016 à 11:34
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 - 20 juil. 2016 à 14:43
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 - 20 juil. 2016 à 14:43
A voir également:
- Extraire une valeur d'un tableau
- Tableau croisé dynamique - Guide
- Extraire une video youtube - Guide
- Tableau ascii - Guide
- Extraire son video - Guide
- Tableau word - Guide
11 réponses
Mike-31
Messages postés
18310
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
29 mars 2024
5 073
Modifié par Mike-31 le 19/07/2016 à 19:15
Modifié par Mike-31 le 19/07/2016 à 19:15
Re,
regarde simplement comme cela, boucle sur 100 lignes à partir de la première, à adapter
On Error Resume Next
For i = 1 To 100
Cells(i, 5) = Application.WorksheetFunction.Index(Range("List"), Application.Match(Cells(i, 2), Range("Num"), 0), Application.Match(Cells(i, 1), Range("Art"), 0))
Next
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
regarde simplement comme cela, boucle sur 100 lignes à partir de la première, à adapter
On Error Resume Next
For i = 1 To 100
Cells(i, 5) = Application.WorksheetFunction.Index(Range("List"), Application.Match(Cells(i, 2), Range("Num"), 0), Application.Match(Cells(i, 1), Range("Art"), 0))
Next
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Mike-31
Messages postés
18310
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
29 mars 2024
5 073
Modifié par Mike-31 le 18/07/2016 à 13:37
Modifié par Mike-31 le 18/07/2016 à 13:37
Bonjour,
peut être comme cela, Feuil1 entre A2 et A20 les noms et entreb B1 et L1 les diamètres
Feuil2 en A1le nom recherché et en A2 le diamètre
=RECHERCHEV(A1;Feuil1!A1:L20;EQUIV(A2;Feuil1!A1:L1))
et complétée avec une gestion d'erreur
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
peut être comme cela, Feuil1 entre A2 et A20 les noms et entreb B1 et L1 les diamètres
Feuil2 en A1le nom recherché et en A2 le diamètre
=RECHERCHEV(A1;Feuil1!A1:L20;EQUIV(A2;Feuil1!A1:L1))
et complétée avec une gestion d'erreur
=SIERREUR(RECHERCHEV(A1;Feuil1!A1:L20;EQUIV(A2;Feuil1!A1:L1));"")
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Mike-31
Messages postés
18310
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
29 mars 2024
5 073
18 juil. 2016 à 14:12
18 juil. 2016 à 14:12
Re,
il suffisait d'adapter tes plages
=RECHERCHEV(B1;Sheet1!A1:F20;EQUIV(Sheet2!A1;Sheet1!A1:F1))
ou
=INDEX(Sheet1!A1:F20;EQUIV(B1;Sheet1!A1:A20;0);EQUIV(A1;Sheet1!A1:F1;0))
je te conseille d'ajouter une gestion d'erreur
=SIERREUR(RECHERCHEV(B1;Sheet1!A1:F20;EQUIV(Sheet2!A1;Sheet1!A1:F1));"")
ou avec cette formule
=SIERREUR(INDEX(Sheet1!A1:F20;EQUIV(B1;Sheet1!A1:A20;0);EQUIV(A1;Sheet1!A1:F1;0));"")
il suffisait d'adapter tes plages
=RECHERCHEV(B1;Sheet1!A1:F20;EQUIV(Sheet2!A1;Sheet1!A1:F1))
ou
=INDEX(Sheet1!A1:F20;EQUIV(B1;Sheet1!A1:A20;0);EQUIV(A1;Sheet1!A1:F1;0))
je te conseille d'ajouter une gestion d'erreur
=SIERREUR(RECHERCHEV(B1;Sheet1!A1:F20;EQUIV(Sheet2!A1;Sheet1!A1:F1));"")
ou avec cette formule
=SIERREUR(INDEX(Sheet1!A1:F20;EQUIV(B1;Sheet1!A1:A20;0);EQUIV(A1;Sheet1!A1:F1;0));"")
Mike-31
Messages postés
18310
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
29 mars 2024
5 073
18 juil. 2016 à 16:59
18 juil. 2016 à 16:59
Re,
oui bien sur, voila un code à placer dans un module et à associer à un bouton ou incorporer dans un code
ou pour automatiser l'action e fonction des deux saisies Sheets(2)
clic droit sur l'onglet de ta feuille 2 et coller ce code résultat en B5 à adapter
oui bien sur, voila un code à placer dans un module et à associer à un bouton ou incorporer dans un code
Sub test()
On Error Resume Next
[B5] = WorksheetFunction.VLookup(Sheets("Sheet2").Range("B1"), Sheets("Sheet1").Range("A1:F20"), Application.Match(Sheets("Sheet2").Range("A1"), Sheets("Sheet1").Range("A1:F1")))
End Sub
ou pour automatiser l'action e fonction des deux saisies Sheets(2)
clic droit sur l'onglet de ta feuille 2 et coller ce code résultat en B5 à adapter
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Range([B1], [B5]) = ""
End If
If Target.Address = "$B$1" Then
[B5] = WorksheetFunction.VLookup(Sheets("Sheet2").[B1], Sheets("Sheet1").[A1:F20], Application.Match(Sheets("Sheet2").[A1], Sheets("Sheet1").[A1:F1]))
End If
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Fahora
Messages postés
814
Date d'inscription
jeudi 24 septembre 2015
Statut
Membre
Dernière intervention
2 janvier 2023
68
18 juil. 2016 à 11:41
18 juil. 2016 à 11:41
Bonjour ,
As tu essayé :
=INDEX(A1:F6;EQUIV(A1;feuille1!A1:F1);EQUIV(A2;feuille1!A1;A6))
a adapter,
Cordialement,
As tu essayé :
=INDEX(A1:F6;EQUIV(A1;feuille1!A1:F1);EQUIV(A2;feuille1!A1;A6))
a adapter,
Cordialement,
Fahora
Messages postés
814
Date d'inscription
jeudi 24 septembre 2015
Statut
Membre
Dernière intervention
2 janvier 2023
68
Modifié par Fahora le 18/07/2016 à 13:33
Modifié par Fahora le 18/07/2016 à 13:33
Peux tu joindre ton fichier , via le site cjoint.com, que je puisse regarder ?
Peut etre pas le fichier original , un fichier test ... Ou un fichier avec que quelques lignes.
Peut etre pas le fichier original , un fichier test ... Ou un fichier avec que quelques lignes.
Mike-31, cela me renvoi aussi "REF", ou une case blanche avec la gestion de l'erreur...
Voici le lien de mon fichier simplifie
http://www.cjoint.com/c/FGsmceFWs5B
Merci de votre aide
Voici le lien de mon fichier simplifie
http://www.cjoint.com/c/FGsmceFWs5B
Merci de votre aide
Mike-31
Messages postés
18310
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
29 mars 2024
5 073
18 juil. 2016 à 18:06
18 juil. 2016 à 18:06
Re,
contrôle bien tes bornes et nom de feuille Sheets("Sheet2") ou Sheets("Sheet1") et pour tes bornes Range("A1:F20") ou [A1:F20]
si tu n'y arrives pas donne moi le nom de l'onglet ou se trouve ta base de données ainsi que les bornes du tableau
ainsi que le nom de l'onglet ou se trouve les deux critères avec l'adresse des deux cellules et l'adresse de la cellule ou tu souhaite le résultat
et quel code tu as retenu
tu peux également utiliser ce code
Sub Macro3()
[B10] = Application.WorksheetFunction.Index(Sheets("Sheet1").Range("A1:F20"), Application.Match([B1], Sheets("Sheet1").Range("A1:A20"), 0), Application.Match([A1], Sheets("Sheet1").Range("A1:F1"), 0))
End Sub
contrôle bien tes bornes et nom de feuille Sheets("Sheet2") ou Sheets("Sheet1") et pour tes bornes Range("A1:F20") ou [A1:F20]
si tu n'y arrives pas donne moi le nom de l'onglet ou se trouve ta base de données ainsi que les bornes du tableau
ainsi que le nom de l'onglet ou se trouve les deux critères avec l'adresse des deux cellules et l'adresse de la cellule ou tu souhaite le résultat
et quel code tu as retenu
tu peux également utiliser ce code
Sub Macro3()
[B10] = Application.WorksheetFunction.Index(Sheets("Sheet1").Range("A1:F20"), Application.Match([B1], Sheets("Sheet1").Range("A1:A20"), 0), Application.Match([A1], Sheets("Sheet1").Range("A1:F1"), 0))
End Sub
Ca fonctionne avec le code Macro ! Merci.
Mais je suis de nouveau bloque... J'aimerai creer une boucle pour faire cela sur plusieurs lignes, et ceux jusqu'a ce qu'il y ait une cellule vide.
J'ai fait un "Do While Not (IsEmpty(ActiveCell)" mais en vain.
Mais je suis de nouveau bloque... J'aimerai creer une boucle pour faire cela sur plusieurs lignes, et ceux jusqu'a ce qu'il y ait une cellule vide.
J'ai fait un "Do While Not (IsEmpty(ActiveCell)" mais en vain.
Mike-31
Messages postés
18310
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
29 mars 2024
5 073
19 juil. 2016 à 13:09
19 juil. 2016 à 13:09
Re,
quel code as tu retenu !
quel code as tu retenu !
J'ai retenu le dernier, avec la macro. J'ai rajouter un variable sur les onglet pour pouvoir choisir le prix en fonction du fournisseur (avec un onglet par fournisseur). Ca fait :
Dim Ws1 as Worksheet
For Each Ws1 In Worksheets
If Ws1.Name=Range("A1").Value Then
[E6]=Application.WorksheetFunction.Index(Sheets(Range("A1").Value.Range("A8:F51"),Application.Match([C6],Sheets(Range("A1").Value).Range("A8:A51"),0)Application.Match([B6],Sheets(Range("A1").Value).Range("A8:F8"),0)
Exit For
End If
Next Ws1
Sur le fichier final je note le nom du fournisseur en A1, le nom de l'article en B6, le diametre en C6. et j'obtient le resultat en E6.
Dim Ws1 as Worksheet
For Each Ws1 In Worksheets
If Ws1.Name=Range("A1").Value Then
[E6]=Application.WorksheetFunction.Index(Sheets(Range("A1").Value.Range("A8:F51"),Application.Match([C6],Sheets(Range("A1").Value).Range("A8:A51"),0)Application.Match([B6],Sheets(Range("A1").Value).Range("A8:F8"),0)
Exit For
End If
Next Ws1
Sur le fichier final je note le nom du fournisseur en A1, le nom de l'article en B6, le diametre en C6. et j'obtient le resultat en E6.
Mike-31
Messages postés
18310
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
29 mars 2024
5 073
Modifié par Mike-31 le 20/07/2016 à 14:44
Modifié par Mike-31 le 20/07/2016 à 14:44
Re,
alors je passe le statut de la discussion en résolu, mais cela de t’empêchera pas de revenir dans la discussion pour un complément d'information
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
alors je passe le statut de la discussion en résolu, mais cela de t’empêchera pas de revenir dans la discussion pour un complément d'information
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
20 juil. 2016 à 13:57
Merci beaucoup Mike