identifier code et dates correspondantes

  • Initiateur de la discussion Initiateur de la discussion mix770
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mix770

XLDnaute Impliqué
Bonjour à vous,

J'adore Excel et mon appétit me conduit encore à faire appel à vous pour avancer 🙂

j'ai un tableau de présence remplie par des tiers avec des codes d'absences "cpc / rtt / ...." (janvier dans fichier joint), je souhaiterai que dans l'onglet CMA il sache:
- reconnaitre les codes, ceux ci s’affichant dans la colonne "codes"
- pour la colonne "absence" pas de problème il va chercher l'intitulé en fonction du code
- qu'il affiche dans la colonne "période" la date de début et de fin pour le code.
- pour la colonne nombre pas de problèmes.
cela veut dire qu'il doit créer un ligne pour chaque code inscrit, reconnaitre les dates de début et fin, pour 1 journée date unique et différencier si un rtt à été posé le 10 juillet et un autre le 20 cela fait 2 lignes

j'espère avoir été clair ....
j'ai mis le fichier en PJ

un grand merci à vous tous
bien cordialement
 

Pièces jointes

Re : identifier code et dates correspondantes

Vous avez raison, j'ai écouté votre proposition il y a bien qu'un seul masque CMA ou l'on va chercher le nom de l'agent, le tableau existait déja avec les 30 feuilles (qui affichent les absences par code et gère les soldes) ce qui permettait de collecter l'activité, le cma lui, sert à la gestion du personnel, c'est le seul document qu'il acceptent.
je regarde ce que cela donne
merci beaucoup.
je reviens vers vous
 
Re : identifier code et dates correspondantes

Alors,
j'ai inséré la ligne à la suite et changer dans "msgbox" la valeur FCbl en place de feuille 106

J'ai une erreur d’exécution "9" -- " l'indice n'appartient pas à la sélection"

Sub Collecte(ByVal FCbl As Worksheet)
Dim FSrc As Worksheet, Cel As Range, Déb As Date, Te(), Codes(), Périodes(), DCV As New Dictionary, _
Valide As Boolean, L As Long, J As Long, Jp As Long, CodCou As String, CodSui As String
On Error Resume Next
Set FSrc = ThisWorkbook.Worksheets(FCbl.[AD4].Value)
If Err Then MsgBox "Feuille """ & FCbl.[AD4].Value & """ introuvable.", vbCritical, "Collecte": Exit Sub
On Error GoTo 0
Te = FCbl.Range("U2:U" & FCbl.[U500].End(xlUp).Row).Value
For L = 1 To UBound(Te)
If Not IsEmpty(Te(L, 1)) Then DCV(UCase(Te(L, 1))) = 0
Next L
Déb = FSrc.[C8].Value - 1
Set Cel = FSrc.[A9:A68].Find(What:=FCbl.[C7].Value, LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Cel Is Nothing Then MsgBox FCbl.[C7].Value & " inexistant.", vbCritical, "Collecte": Exit Sub
Te = Cel.Offset(, 2).Resize(, 31).Value
ReDim Codes(1 To 19, 1 To 1), Périodes(1 To 19, 1 To 2)
L = 0: J = 1: CodSui = UCase(Te(1, 1))
Do ' Début code
CodCou = CodSui: Valide = DCV.Exists(CodCou)
If Valide Then L = L + 1: Codes(L, 1) = CodCou: Périodes(L, 1) = Format(Déb + J, "dd mmm yyyy")
Do: If J >= 31 Then Exit Do
J = J + 1: CodSui = UCase(Te(1, J)): Loop Until CodSui <> CodCou
' Fin code
If Valide Then Périodes(L, 2) = Format(Déb + J - 1, "dd mmm yyyy")
Loop Until J >= 31
FCbl.[A13].Resize(19, 1).Value = Codes
FCbl.[C13].Resize(19, 2).Value = Périodes
FCbl.[G35:R40].Value = ThisWorkbook.Worksheets(FCbl.[C7].Value).[C40:N45].Value
End Sub
voila.
 
Re : identifier code et dates correspondantes

OK, comme les onglets ont toujours le même nom (nom1;nom2),etc.. car il y a des changement de personnel, ce n'est pas bon
il y a peut etre moyen d'avoir une référence autrement par exemple l'onglet nom1 sera toujours lié à la ligne N° 9 des mois.
 
Re : identifier code et dates correspondantes

Oui, vous pouvez spécifier à la place de FCbl.[C7].Value une savante expression numérique représentant le numéro d'ordre de la feuille, calculé à partir de Cel.Row. Définissez en tête de la procédure, instruction Const, une constante à ajouter pour obtenir le numéro de la feuille, bien commentée et spécifiant comme valeur une différence des débuts respectifs.
 
Re : identifier code et dates correspondantes

Je ne sais pas, moi. C'est pareil pour toutes le feuilles mois, non ? Les noms sont partout les mêmes et dans le même ordre que les feuilles que je n'ai jamais vues des personnes. Vous connaissez l'Index de la feuille de la 1ère personne et le numéro de la ligne correspondante dans les feuilles mois. Cel.Row donne le numéro de la ligne de la personne traitée dans cette feuille mois, vous devriez donc pouvoir en déduire le numéro d'Index de la feuille de la personne concernée.
 
Re : identifier code et dates correspondantes

Bonjour Dranred,
à mon grand désespoir depuis 2 heures je tourne en rond sans trouver comment faire, sur les onglets "nom1.. etc.." le nom de l'agent est toujours en "B5" si c'est dans la ligne ci dessous qu'il faut l'intégrer, je ne vois pas, désolé.
FCbl.[G35:R40].Value = ThisWorkbook.Worksheets(FCbl.[C7].Value).[C40:N45].Value
j'ai remplacé la feuil106 par Fcbl je joins un tableau avec l'onglet nom1
merci et je m'excuse de mon piètre niveau
cordialement
 
Re : identifier code et dates correspondantes

Bonjour
il y a peut etre moyen d'avoir une référence autrement par exemple l'onglet nom1 sera toujours lié à la ligne N° 9 des mois.
Alors essayez :
VB:
FCbl.[G35:R40].Value = ThisWorkbook.Worksheets("nom" & Cel.Row - 9 + 1).[C40:N45].Value
ou si vos noms sont toujours une ligne sur 2 avec ce stupide "Remplace" entre chaque, alors:
VB:
FCbl.[G35:R40].Value = ThisWorkbook.Worksheets("nom" & (Cel.Row - 9) \ 2 + 1).[C40:N45].Value
 
Dernière édition:
Re : identifier code et dates correspondantes

j' ai intégré ta seconde proposition, et je suis d'accord le "remplace" est Ch..., le tableau d'origine est fait pour intégrer les remplacements ponctuels.
Cela fonctionne pour tous les mois de l'année sur le premier nom de la liste "roland", dès que je sélectionne un autre nom j'ai le message ""9" -- " l'indice n'appartient pas à la sélection"".
pour ma compréhension, mon idée d'aller chercher en B5 de chaque Onglet (nom1,nom2,..) puisque c'est là que se trouve le tableau à copier n'est pas cohérente.
c'est dommage le tableau complet est trop lourd, j'envoie juste les onglets "masque cma,nom1, janvier)
merci à vous.
je suis désolé de vous embêter
cordialement
 

Pièces jointes

Re : identifier code et dates correspondantes

Ajoutez des vérifications :
VB:
Dim Nom As String, NomFeui As String, FeuiNom As Worksheet
Nom = FCbl.[C7].Value
NomFeui = "Nom" & (Cel.Row - 9) \ 2 + 1
On Error Resume Next
Set FeuiNom = ThisWorkbook.Worksheets(NomFeui)
If Err Then MsgBox "Feuille """ & NomFeui & """ introuvable.", vbCritical, "Collecte": Exit Sub
On Error GoTo 0
If FeuiNom.[B5].Value <> Nom Then MsgBox "Attention, " & NomFeui & "!B5 contient """ & _
   FeuiNom.[B5].Value & """ au lieu de """ & Nom & """.", vbExclamation, "Collecte"
FCbl.[G35:R40].Value = FeuiNom.[C40:N45].Value
 
Re : identifier code et dates correspondantes

Dranreb,

je ne dirai qu'une chose: RESPECT.

pour la maitrise et pour votre patience.

cela marche impeccable
j'ai testé plusieurs noms et mois, je ne vois rien qui coince.

un grand merci pour moi et mes collègues

bien cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
460
Réponses
3
Affichages
302
Réponses
15
Affichages
1 K
Compte Supprimé 979
C
Réponses
12
Affichages
1 K
Réponses
3
Affichages
884
Réponses
26
Affichages
3 K
Retour