Probleme de renvois de date

bonjour à tous, je suis nouveau sur le forum, je souhaite me perfectionner sur excel et je pense que c'est l'endroit idéal, très bon forum.merci à vous tous.

Je me suis créé un fichier de pointage avec une feuille par mois mais avec plusieurs agents et je voudrais faire une feuille récapitulatif par agent. J'ai mis une formule pour faire un essai sur le mois de janvier dans la case 1 de la colonne cp(de la feuille agent 1) mais lorsque je pointe un CP le 01/01/12, ça me donne le 09/01/2015.Je 'arrive pas à comprendre d'ou viens l'erreur.

c'est une formule qui m'a été donnée, je debute dans les formules.

je souhaierais que la formule fonctionne avec tous les mois.

je vous joins mon fichier..

23exemple-pointage.xlsm (182.08 Ko)

par avance un grand merci

Bonjour

Le Nom date_ligne

est utilisé dans ta formule:

=SI(B7<=NB.SI(Janvier!$I$7:$AM$7;$B$6);INDEX(date_ligne;;PETITE.VALEUR(SI(Janvier!$I$7:$AM$7=$B$6;COLONNE(Janvier!$I$7:$AM$7)-1);LIGNES($1:1)));"")

et fait référence à

='D:\Users\Franck\Documents\exemples excel\[Pointage_Rachid(1).xls]Pointage'!$B$4:$AE$4

Que nous n'avons pas pour contrôler.

Cordialement

bonjour, c'est une formule que j'ai repris d'un fichier existant mais je n'arrive justement pas l'adapter à mon fichier, est ce que je la tape pas comme il faut, peut-on la corriger d'autant plus que je voudrais qu'elle prenne en compte tous les mois.

merci à vous

Salut le forum

Ta formule adaptée (Matricielle à valider par Ctrl + Shift + Enter)

=SI(B7<=NB.SI(Janvier!$I$7:$AM$7;$B$6);INDEX(Janvier!$I$4:$AM$4;;PETITE.VALEUR(SI(Janvier!$I$7:$AM$7=$B$6;COLONNE(Janvier!$I$7:$AM$7)-8);LIGNES($1:1)));"")

J'ai remplacé date_ligne par Janvier!$I$4:$AM$4

Mytå

bonjour à tous ,

nickel ça fonctionne bien pour le mois de janvier, comment faire pour rajouter les plages des autres mois pour le même agent 1.

merci vous êtes super.

Re le forum

Avec une fonction personnalisée

Sélectionne C7:C27 et valide la formule suivante par Ctrl + Shift + Enter

=Liste3D("I7:AM7";"cp")
Function Liste3D(champ As String, code As String)
Dim TblSh, Sh
Dim Dico As Object, C As Range

TblSh = Array("Janvier", "Février", "Mars", "Avril", _
                "Mai", "Juin", "Juillet", "Août", _
                    "Septembre", "Octobre", "Novembre", "Décembre")
Application.Volatile
Set Dico = CreateObject("Scripting.Dictionary")

For Each Sh In TblSh
  With Worksheets(Sh)
    For Each C In .Range(champ)
      If C.Value = code Then _
        Dico(.[A4].Offset(, C.Column - 1).Value) = .[A4].Offset(, C.Column - 1).Value
    Next C
  End With
Next Sh

Liste3D = Application.Transpose(Dico.items)

End Function

bonjour à tous

un grand merci à toi Mytå, tu es un pro en la matière. J'ai copier la formule dans les autres colonnes (jte, jts rec) mais par contre j'ai quelques erreurs sur la feuille Agent 1

quand je ne pointe rien(ex cp) j'ai toute le colonne #valeur!

si je pointe que 1 seul caractère(ex jte) j'ai toute la colonne avec la même date

pa contre à partir de 2 pointages j'ai bien jes 2 bonnes dates mais les autres cellule me donne #N/A

Est- il possible de corriger ce petit point SVP ?

je vous remet le fichier à jour.

espérant ne pas trop vous embéter quand même mais heureusement que votre forum existe, franchement merci .

Franck

10exemple-pointage.xlsm (196.05 Ko)

Re le forum

La macro modifiée selon ta demande (Plus de #Valeur et de #N/A)

Option Explicit

Function Liste3D(Champ As String, Code As String)
Dim TblSh, Sh
Dim Dico As Object, C As Range, Cpt As Byte

TblSh = Array("Janvier", "Février", "Mars", "Avril", _
                "Mai", "Juin", "Juillet", "Août", _
                    "Septembre", "Octobre", "Novembre", "Décembre")
Application.Volatile
Set Dico = CreateObject("Scripting.Dictionary")

For Each Sh In TblSh
  With Worksheets(Sh)
    For Each C In .Range(Champ)
      If C.Value = Code Then _
        Dico(.[A4].Offset(, C.Column - 1).Value) = .[A4].Offset(, C.Column - 1).Value
    Next C
  End With
Next Sh

For Cpt = Dico.Count To Application.Caller.Rows.Count
  Dico(Cpt) = ""
Next Cpt

Liste3D = Application.Transpose(Dico.items)

End Function

Pour éviter les erreurs de saisie (cp, cP, Cp ou CP) remplace la ligne surlignée par

If UCase(C.Value) = UCase(Code) Then _

Mytå

bonjour à tous

un Grand Grand Merci Mytå, tout à l'air de fonctionner, il me reste plus qu'a tout mettre à jour avec tout mes agents et chaque feuille récapitulatif pour voir si tout fonctionne.

Franchement super c'est exactement la solution recherchée, encore merci.

A Bientôt

Re le forum

Bien heureux que ton problème soit solutionné.

Mais il ne faut pas oublier de le faire passer en [Résolu]

file.php id 18923

Mytå

bonjour, encore un petit soucis,désolé,

dans la feuille agent 1 j'ai 2 colonnes "CHP", je n'arrive pas à sélectionner mes 2 colonnes et mettre ma formule liste3d SVP.

merci

Re le forum

franck.36 a écrit :

Dans la feuille agent 1 j'ai 2 colonnes "CHP", je n'arrive pas à sélectionner mes 2 colonnes et mettre ma formule Liste3D

Que veux-tu dire par 2 colonnes.

Mytå

bonjour,

dans le bas de la feuille agent 1, j'aurais besoins d'avoir 2 colonnes en C et F pour le caractère CHP, je souhaiterais faire pareil avec le renvois des dates lorsque je pointe CHP.

A voir si possibilité.

merci.

Re le forum

J'ai modifié le code

Function Liste3D(Champ As String, Code As String, Valeur As Integer)
Dim TblSh, Sh
Dim Dico As Object, C As Range, Cpt As Byte

TblSh = Array("Janvier", "Février", "Mars", "Avril", _
                "Mai", "Juin", "Juillet", "Août", _
                    "Septembre", "Octobre", "Novembre", "Décembre")
Application.Volatile
Set Dico = CreateObject("Scripting.Dictionary")

For Each Sh In TblSh
  With Worksheets(Sh)
    For Each C In .Range(Champ)
      If UCase(C.Value) = UCase(Code) Then _
        Dico.Add Dico.Count, .[A4].Offset(, C.Column - 1).Value
    Next C
  End With
Next Sh

If Dico.Item(Valeur - 1) Then
    'Correctif si calendrier 1904 - Soustraire 1462 jours à la date
  Liste3D = Dico.Item(Valeur - 1) - IIf(ActiveWorkbook.Date1904 = True, 1462, 0)
Else
  Liste3D = ""
End If

End Function

Utilisation en C47 de la feuille Agent#1

=Liste3D("I7:AM7";"chp";B47)

Mytå

bonjour,

super et un grand merci à toi Mytå, tout fonctionne.

Merci de m'avoir consacré de ton temps.

A bientôt

Franck

Rechercher des sujets similaires à "probleme renvois date"