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
 

Pièces jointes

  • CONVOCATIONS VACATAIRES DECEMBRE.xlsx
    28.1 KB · Affichages: 10

Robert

XLDnaute Barbatruc
Repose en paix
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
 

Pièces jointes

  • Stéphane_v01.xlsm
    34.4 KB · Affichages: 14

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
 

Robert

XLDnaute Barbatruc
Repose en paix
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...)
 

Hasco

XLDnaute Barbatruc
Repose en paix
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.
 

Pièces jointes

  • CONVOCATIONS VACATAIRES DECEMBRE.xlsx
    28.8 KB · Affichages: 4
  • CONVOCATIONS-V2.xlsx
    28.7 KB · Affichages: 5
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
 

Discussions similaires

Statistiques des forums

Discussions
311 707
Messages
2 081 746
Membres
101 812
dernier inscrit
trufu