XL 2010 insertion d'une liste dans plusieurs cellules avec un mot-clé

STEPHANELOUIS

XLDnaute Nouveau
Bonjour,

J'ai besoin d'une aide sur la création d'un planning.

J'aimerai par un menu déroulant sélectionner en case H4 en rouge ( ou autre)... soit équipe 1 ou équipe 2( se trouvant dans la feuille équipe et que les noms de c'est personnes se trouvant en équipe 1 , équipe 2 dans cette même feuille s'affiche en case a7, a8 ,a9, a10, a11, etc de la feuille convocation vacataires.
un peu compliqué à expliquer mais j’espère m'être fait comprendre.

merci d'avance

en pj le classeur
 

Fichiers joints

Robert

XLDnaute Barbatruc
Bonjour Stéphane,

Dans un premier temps en H4, Validation de données / Autoriser : Liste / Source : Équipe 1;Équipe 2;Équipe 3.
Ensuite ce code dans l'onglet CONVOCATION VACATAIRES VIERGE :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim EQ As Worksheet 'déclare la variable EQ (EQuipe)
Dim COL As String 'déclare la variable COL(COLonne)
Dim DL As Byte 'déclare la variable DL (Dernière Ligne)
Dim I As Byte 'déclare la variable I (Incrément)
Dim L As String 'déclare la variable L (Liste)

Set EQ = Worksheets("équipe") 'définit l'onglet EQ
If Target.Address <> "$H$4" Then Exit Sub 'si le changement a lieu ailleurs qu'en H4, sort de la procédure
Range("A7:A18").Validation.Delete 'efface les éventuelles validation de données existantes dans la plage A7:A18
Select Case Target.Value 'agit en fonction de la valeur de H4
    Case "Équipe 1" 'cas Équipe 1"
        COL = "B" 'définit la colonne COL
    Case "Équipe 2"
        COL = "F" 'définit la colonne COL
    Case "Équipe 3"
        COL = "J" 'définit la colonne COL
    Case ""
        Range("A7").Select 'sélectionne la cellule A7
        Exit Sub 'sort de la procédure
End Select 'fin de l'action en fonction de la valeur de H4
DL = EQ.Cells(Application.Rows.Count, COL).End(xlUp).Row 'définit la dernière ligne DL de la colonne COL
For I = 2 To DL 'boucle sur les lignes 2 à DL
    L = IIf(L = "", EQ.Cells(I, COL), L & "," & EQ.Cells(I, COL)) 'définit la liste L
Next I 'prchaine ligne de la boucle
Range("A7:A18").Validation.Add xlValidateList, Formula1:=L 'définit la liste L comme validation de données à la plage A7:A18
Range("A7").Select 'sélectionne la cellule A7
End Sub
 

Fichiers joints

STEPHANELOUIS

XLDnaute Nouveau
Bonjour Stéphane,

Dans un premier temps en H4, Validation de données / Autoriser : Liste / Source : Équipe 1;Équipe 2;Équipe 3.
Ensuite ce code dans l'onglet CONVOCATION VACATAIRES VIERGE :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim EQ As Worksheet 'déclare la variable EQ (EQuipe)
Dim COL As String 'déclare la variable COL(COLonne)
Dim DL As Byte 'déclare la variable DL (Dernière Ligne)
Dim I As Byte 'déclare la variable I (Incrément)
Dim L As String 'déclare la variable L (Liste)

Set EQ = Worksheets("équipe") 'définit l'onglet EQ
If Target.Address <> "$H$4" Then Exit Sub 'si le changement a lieu ailleurs qu'en H4, sort de la procédure
Range("A7:A18").Validation.Delete 'efface les éventuelles validation de données existantes dans la plage A7:A18
Select Case Target.Value 'agit en fonction de la valeur de H4
    Case "Équipe 1" 'cas Équipe 1"
        COL = "B" 'définit la colonne COL
    Case "Équipe 2"
        COL = "F" 'définit la colonne COL
    Case "Équipe 3"
        COL = "J" 'définit la colonne COL
    Case ""
        Range("A7").Select 'sélectionne la cellule A7
        Exit Sub 'sort de la procédure
End Select 'fin de l'action en fonction de la valeur de H4
DL = EQ.Cells(Application.Rows.Count, COL).End(xlUp).Row 'définit la dernière ligne DL de la colonne COL
For I = 2 To DL 'boucle sur les lignes 2 à DL
    L = IIf(L = "", EQ.Cells(I, COL), L & "," & EQ.Cells(I, COL)) 'définit la liste L
Next I 'prchaine ligne de la boucle
Range("A7:A18").Validation.Add xlValidateList, Formula1:=L 'définit la liste L comme validation de données à la plage A7:A18
Range("A7").Select 'sélectionne la cellule A7
End Sub
 

STEPHANELOUIS

XLDnaute Nouveau
Bonjour Robert,

Super merci pour ton aide précieuse, mais je débute là-dedans pourrais-tu me donner plus d’explications afin que je puisse insérer ce code et qu’à la sélection des équipes les noms se mettent dans les cases dédié.

Merci d’avance
 

STEPHANELOUIS

XLDnaute Nouveau
Je Check ça cet après-midi au travail je reviens vers toi si je rencontre des difficultés.
Si tu es toujours d’accord pour me donner un petit coup de pousse
Bonjour Robert,
Je viens de faire le teste mais ça ne fonctionne pas il me dit que le classeur contient une ou plusieurs liaisons qui ne peuvent pas être mises à jour
 

Robert

XLDnaute Barbatruc
Re,

Cela n'a rien à voir avec le problème, le code fonctionne !...
Le premier fichier que tu as fourni était déjà en mauvais état. Excel a réparé et j'ai pu réaliser le code. Le fichier que moi je t'ai fourni contient les même liaisons que le tien. Il te suffit de cliquer sur Continuer ou de repartir d'un fichier vierge et de faire un copier/coller des données, formules et codes pour éviter de trimbaler les anomalies ad vitam æternam (oui je sais, je parle couramment l'étranger...)
 

Roblochon

XLDnaute Accro
Bonjour,
Bonjour @Robert,
Par formule dans le classeur joint.
Les plage idoines de la feuille équipes ont été nommées 'Equipe1' à 'Equipe3'
En H4 de Convocation vacataires..., liste de validation pour Equipe1 à Equipe3
Puis en A7 la formule suivant tirée jusqu'à la fin: =SI($H$4<>"";INDEX(INDIRECT($H$4);LIGNE(1:1);1))
Si elle ne trouve pas de ligne correspondante, elle retourne 0. Les zéros sont cachés par un format personnalisé 'Standard;Standard;;@' qui pourrait être réduit en ';;;@' si vous ne mettez jamais de nombres dans les cellules concernées.

Dans le fichier convocations-v2, sur les même bases et sans formule rechercheV.
Après avoir sélectionner les cellules A7:B18 (A7 étant la cellule active), rentrer dans la barre de formule: =Indirect($H$4) puis valider par CTRL+MAJ+ENTREE. Ce qui reproduit la plage de cellule de l'équipe sélectionnée.

Cordialement

@Robert a raison, le classeur exemple a des problèmes et a été réparé à l'ouverture.
 

Fichiers joints

Dernière édition:

STEPHANELOUIS

XLDnaute Nouveau
Bonjour,
Bonjour @Robert,
Par formule dans le classeur joint.
Les plage idoines de la feuille équipes ont été nommées 'Equipe1' à 'Equipe3'
En H4 de Convocation vacataires..., liste de validation pour Equipe1 à Equipe3
Puis en A7 la formule suivant tirée jusqu'à la fin: =SI($H$4<>"";INDEX(INDIRECT($H$4);LIGNE(1:1);1))
Si elle ne trouve pas de ligne correspondante, elle retourne 0. Les zéros sont cachés par un format personnalisé 'Standard;Standard;;@' qui pourrait être réduit en ';;;@' si vous ne mettez jamais de nombres dans les cellules concernées.

Dans le fichier convocations-v2, sur les même bases et sans formule rechercheV.
Après avoir sélectionner les cellules A7:B18 (A7 étant la cellule active), rentrer dans la barre de formule: =Indirect($H$4) puis valider par CTRL+MAJ+ENTREE. Ce qui reproduit la plage de cellule de l'équipe sélectionnée.

Cordialement

@Robert a raison, le classeur exemple a des problèmes et a été réparé à l'ouverture.
Bonjour Roblochon, Bonjour Robert,

Pour commencer un grand merci cela fonction...
Mais j'aurais vraiment aimé savoir le faire par mes propres moyens pouvez vous m'expliquez?
Merci d'avance
 

Roblochon

XLDnaute Accro
Bonjour;

Mais j'aurais vraiment aimé savoir le faire par mes propres moyens pouvez vous m'expliquez?
Je ne peux pas vous dire plus que ce que je vous ai déjà dis dans le post #9 . Maintenant à vous de décortiquer chaque étape et d'apprendre.

Par contre si vous avez une question plus précise, n'hésitez pas à demander.

Bonne continuation
 

Discussions similaires


Haut Bas