Renvoyer valeur sur une ligne en fonction d'un critère
Littleshoe
Messages postés
24
Statut
Membre
-
Littleshoe Messages postés 24 Statut Membre -
Littleshoe Messages postés 24 Statut Membre -
Bonjour tout le monde, j'ai un petit soucis qui me pose beaucoup de problème:
Voilà:
J'ai une matrice fournisseur / Machine:
Fournisseurs // Machine1 // Machine2
F1 X X
F2 X
F3 X
Chaque fournisseur peut produire une ou plusieurs machines.
Comment faire pour faire apparaitre dans une colonne le nom des différents fournisseurs qui produise 1 machine ?
Exemple : dans une liste déroulante: je choisis Machine1: les résultats qui s'affiche sont F1 et F2.
Merci d'avancE pour votre aide.
Robin
Voilà:
J'ai une matrice fournisseur / Machine:
Fournisseurs // Machine1 // Machine2
F1 X X
F2 X
F3 X
Chaque fournisseur peut produire une ou plusieurs machines.
Comment faire pour faire apparaitre dans une colonne le nom des différents fournisseurs qui produise 1 machine ?
Exemple : dans une liste déroulante: je choisis Machine1: les résultats qui s'affiche sont F1 et F2.
Merci d'avancE pour votre aide.
Robin
A voir également:
- Renvoyer valeur sur une ligne en fonction d'un critère
- Fonction si et - Guide
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
- Formulaire en ligne de meta - Guide
- Reconnaissance musique en ligne sans télécharger - Guide
5 réponses
Bonjour,
Je n'ai pas su faire autrement qu'avec du code.
Mais voici un fichier qui marche plutôt bien : https://www.cjoint.com/c/FFDnFOgkaxf
Cordialement.
Je n'ai pas su faire autrement qu'avec du code.
Mais voici un fichier qui marche plutôt bien : https://www.cjoint.com/c/FFDnFOgkaxf
Cordialement.
Bonjour,
Tu peux également utiliser un filtre avancé qui te permettra d'afficher le résultat dans une colonne dédiée.
A+
Tu peux également utiliser un filtre avancé qui te permettra d'afficher le résultat dans une colonne dédiée.
A+
Bonjour à tous
Un exemple sans macro (avec deux colonnes de service)
http://www.cjoint.com/c/FFDopuqaSMu
Cdlmnt
Un exemple sans macro (avec deux colonnes de service)
http://www.cjoint.com/c/FFDopuqaSMu
Cdlmnt
Bonjour à tous.
L'exemple de ccm81 est excellent également. L'idée de Gyrus est aussi très bonne. C'est vraiment à toi de voir ce que tu préfères.
En tout cas, voici le code commenté comme tu me l'as demandé, n'hésites surtout pas si tu as des questions :
Cordialement.
L'exemple de ccm81 est excellent également. L'idée de Gyrus est aussi très bonne. C'est vraiment à toi de voir ce que tu préfères.
En tout cas, voici le code commenté comme tu me l'as demandé, n'hésites surtout pas si tu as des questions :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Macro qui s'éxécute à chaque nouvelle sélection de cellule sur la feuille
Dim DL As Long, DC As Long 'Définition des variable (ne pas toucher)
DL = Cells(Application.Rows.Count, 1).End(xlUp).Row 'Détermine la dernière ligne (en fonction de la colonne A, mettre la colonne qui est remplie le plus bas)
DC = Cells(1, Application.Columns.Count).End(xlToLeft).Column 'Détermine la dernière colonne (en fonction de la ligne 1)
Range("J3").Validation.Delete 'Supprime la liste déroulante de la cellule J3
Range("K3:K2000").ClearContents 'Supprime les valeurs de K3 à K2000
With Range("J3").Validation 'Crée la liste déroulante en J3
.Add Type:=xlValidateList, _
AlertStyle:=xlValidAlertStop, _
Formula1:="=" & Range(Cells(1, 2), Cells(1, DC)).Address 'Les valeurs de la liste déroulante vont de la cellule B1 (Celle(ligne, colonne)) à la cellule Dernière colonne 1 (Cells(ligne, DC donc dernière colonne)
End With
y = 3 'Définit la variable y = 3
For j = 2 To DC 'Boucle pour j allant de la colonne 2 à la dernière colonne
If Cells(1, j).Value = Range("J3").Value Then 'Si la cellule de la colonne j ligne 1 = Cellule J3 alors
For i = 2 To DL 'Boucle pour i allant de la ligne 2 à la dernière ligne
If Cells(i, j) = "x" Then 'Si la cellule de ligne i et de la colonne j = "x" alors
Range("K" & y).Value = Range("A" & i).Value 'La cellule de la colonne K et de la ligne y (définit comme étant égal à 3) = La cellule de la colonne A et de la ligne i (la machine quoi)
y = y + 1 'Incrémente y de 1, ce qui veut dire qu'à la prochaine condition, y sera égal à 4 puis 5 puis 6...
End If 'Fin de la condition
Next i 'Prochaine ligne de la boucle i
End If 'Fin de la condition
Next j 'Prochaine ligne de la boucle j
End Sub 'Fin de macro
Cordialement.
Bonjour Kuartz,
Tout d'abord merci pour ton aide et tes commentaires sur le code VBA suivant:
C'est top, mais pour comprendre la définition de variable.
Pourrais -tu m'aider sur un autre point de ce code. Ici la bdd (tableau) et la liste déroulante, et les réponses du code sont sur la même feuille.
Est il possible d'établir les variables DL/DC pour la base de donnée sur autre une feuille de calcul?
Et de mettre la liste déroulante dans une autre tout en gardant le type de code : Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Macro qui s'éxécute à chaque nouvelle sélection de cellule sur la feuille
Merci d'avance?.
Tout d'abord merci pour ton aide et tes commentaires sur le code VBA suivant:
C'est top, mais pour comprendre la définition de variable.
Pourrais -tu m'aider sur un autre point de ce code. Ici la bdd (tableau) et la liste déroulante, et les réponses du code sont sur la même feuille.
Est il possible d'établir les variables DL/DC pour la base de donnée sur autre une feuille de calcul?
Et de mettre la liste déroulante dans une autre tout en gardant le type de code : Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Macro qui s'éxécute à chaque nouvelle sélection de cellule sur la feuille
Merci d'avance?.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour bonjour,
Pour avoir la dernière ligne sur une autre feuille, il suffit de la rajouter devant la ligne de code :
Pareil pour DC.
Après et ben tu n'as plus qu'à remettre le même code pour la liste. Sauf qu'il faut ajouter le nom de la feuille, again.
Cordialement.
Pour avoir la dernière ligne sur une autre feuille, il suffit de la rajouter devant la ligne de code :
DL = Sheets("nomdelafeuille").Cells(Application.Rows.Count, 1).End(xlUp).Row
Pareil pour DC.
Après et ben tu n'as plus qu'à remettre le même code pour la liste. Sauf qu'il faut ajouter le nom de la feuille, again.
Formula1:="=" & Sheets("nomdelafeuille").Range(Cells(1, 2), Cells(1, DC)).Address
Cordialement.
Bonjour Kuartz,
Merci pour ta réponse, mais j'ai toujours probleme avec le code? erreur de compilation et de syntaxe:
Voici le modifs, Aurais-tu une idée?
Merci pour ta réponse, mais j'ai toujours probleme avec le code? erreur de compilation et de syntaxe:
Dim DL As Long, DC As Long 'Définition des variable (ne pas toucher)
DL = Sheets("test").Cells(Application.Rows.Count, 1).End(xlUp).Row
'Détermine la dernière ligne (en fonction de la colonne A, mettre la colonne qui est remplie le plus bas)
DC = Sheets("test").Cells(1, Application.Columns.Count).End(xlToLeft).Column 'Détermine la dernière colonne (en fonction de la ligne 1)
Range("F3").Validation.Delete 'Supprime la liste déroulante de la cellule J3
Range("G3:G2000").ClearContents 'Supprime les valeurs de G3 à G2000
With Range("F3").Validation 'Crée la liste déroulante en F3
.Add Type:=xlValidateList,
AlertStyle:=xlValidAlertStop,
Formula1:="=" & Sheets("test").Range(Cells(1, 2), Cells(1, DC)).Address
End With
Voici le modifs, Aurais-tu une idée?
Merci Kuartz,
pour ta réponse rapide, mais le code de neut toujours pas fonctionner, j'essaye de le tripoter dans tous les sens mais toujours pas.
Ci-joint le fichier:
https://www.cjoint.com/c/FHdoZbIzYFG
Si tu as tu temps pourrais m'aider sur ce point?
merci d'avance.
pour ta réponse rapide, mais le code de neut toujours pas fonctionner, j'essaye de le tripoter dans tous les sens mais toujours pas.
Ci-joint le fichier:
https://www.cjoint.com/c/FHdoZbIzYFG
Si tu as tu temps pourrais m'aider sur ce point?
merci d'avance.
Ca fonctionne si tu fais bien un copier/coller de mon code initial et que tu change juste les valeurs dont tu as besoin.
https://www.cjoint.com/c/FHdo4jwJ24f
https://www.cjoint.com/c/FHdo4jwJ24f
c'est parfait Merci beaucoup !!!
Etant donné que je vais modifier le code en fonction du fichier,
Pourrais tu, si tu as le temps insérér des commentaires dans le code?
Il y a des choses que je comprends pas trop.
Merci d'avance Kuartz !