Bonjour.
J'ai modifié le code pour qu'il trouve les bonnes colonnes tout seul.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| public function LirePersonneDuJour() as variant
'Trouve le nom de la personne en date du jour.
'Retourne Null si pas trouvé.
dim result as variant:result=null
dim feuille as worksheet: set feuille=thisWorkbook.Worksheets("ListeDatePersonne") 'Mettre ici le nom de la feuille qui contient la liste
'Trouve la colonne des noms
dim cell_entete_remplacant as range
set cell_entete_remplacant=feuille.rows(6).Find("REMPLACANT NOM PRENOM")
'Trouve la colonne des dates
dim cell_entete_date as range
set cell_entete_date=feuille.rows(6).Find("Date limite pour la prochaine évaluation")
'Calcul le décalage horizontale entre les colonnes
dim offset as long:offset=cellule_entete_remplacant - cell_entete_date + 1
dim zone_date as range
set zone_date=feuille.Columns(cell_entete_date.column)
dim cell as range
set cell=zone.Find(date)
if not cell is nothing
'On a trouvé la date, prenons le nom correspondant
result=cell.offset(0, offset ).Value 'Nom correspondant
end if
LirePersonneDuJour=result
'Libère la mémoire utilisée.
set zone_date=nothing
set cell_entete_remplacant=nothing
set cell_entete_date=nothing
set feuille=nothing
end function |
Tu peux le mettre dans ThisWorkbok avec l'autre code.
Pour accéder au code appuis sur les touches [alt][f11].
À gauche tu va avoir tes feuilles et en bas ThisWorkbook qui est ton classeur courant.
Tu copies les 2 codes là et tu ajustes la ligne :
dim feuille as worksheet: set feuille=thisWorkbook.Worksheets("ListeDatePersonne") 'Mettre ici le nom de la feuille qui contient la liste
Pour indiquer entre les guillemets (") le nom de la feuille qui contient ta liste dans ton classeur.
Et il faut sauvegarder ton classeur au format xlsm si ce n'est pas déjà fait.
Note que je n'ai pas testé ce code donc il pourrait y avoir des erreurs.
J'ai un petit doute sur ma formule de calcul de l'offset.
Donc si tu as une erreur, poste :
- Le message d'erreur indiqué par le système.
- La ligne sur laquelle l'erreur a été détecté.
- Si il n'y a pas de message et que tu n'obtiens pas le résultat voulu, indique ce que tu attendais et ce que tu as eu.
A+
Partager