Fonction LIREDONNEESTABCROISDYNAMIQUE KO vs des chaines de caractères quasi identique

  • Initiateur de la discussion Initiateur de la discussion les_sonics
  • 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 !

L

les_sonics

Guest
Bonjour,
mon LIREDONNEESTABCROISDYNAMIQUE bute devant 2 champs dont les chaines de caarctères commencent de manière comparables :
. "Repas 1er âge"
. "Repas 2ème âge"

La fonction me ramène donc un N/A au lieu de me ramener la valeur correspondant à "Repas 1er âge" puis en dessous la valeur correspondant "Repas 2ème âge"

Quelqu'un peut-il m'aider svp ?
Un grand merci par avance
Nicolas
 

Pièces jointes

Re : Fonction LIREDONNEESTABCROISDYNAMIQUE KO vs des chaines de caractères quasi iden

Bonjour JC,
que veut dire "Dans l'attente de la balise :
VB:
 Code [/highlight ] pour des codes plus agréables à lire" ? Faut-il que je modifie la présentation de mes questions ?
 
Re : Fonction LIREDONNEESTABCROISDYNAMIQUE KO vs des chaines de caractères quasi iden

Bonjour à tous,

Non pas du tout... Cette mention fait partie de ma signature...

C'est une balise pour rendre plus lisible les codes :

Citation :
Function NumSem(DateJour As Date) As Long 'tototiti2008 sur XLD
'Calcule le numéro de semaine d'une année suivant cette norme :
'la semaine du 1er janvier n'est la semaine 1 que si elle contient au moins 4 jours
'la semaine commence le lundi
Dim PremJanv As Date, PremJanvSuiv As Date, DateSem1 As Date, DateSem1Suiv As Date
PremJanv = DateSerial(Year(DateJour), 1, 1)
PremJanvSuiv = DateSerial(Year(DateJour) + 1, 1, 1)
If Weekday(PremJanv, vbMonday) <= 4 Then
DateSem1 = PremJanv - Weekday(PremJanv, vbMonday) + 1
Else
DateSem1 = PremJanv + 8 - Weekday(PremJanv, vbMonday)
End If
If Weekday(PremJanvSuiv, vbMonday) <= 4 Then
DateSem1Suiv = PremJanvSuiv - Weekday(PremJanvSuiv, vbMonday) + 1
Else
DateSem1Suiv = PremJanvSuiv + 8 - Weekday(PremJanvSuiv, vbMonday)
End If
NumSem = 1 + (DateJour - DateSem1) \ 7
If DateSem1 > DateJour Then
NumSem = NumSem(PremJanv - 1)
ElseIf DateJour >= DateSem1Suiv Then
NumSem = NumSem(PremJanvSuiv)
End If
End Function

Code :
Code:
Function NumSem(DateJour As Date) As Long 'tototiti2008 sur XLD
'Calcule le numéro de semaine d'une année suivant cette norme :
'la semaine du 1er janvier n'est la semaine 1 que si elle contient au moins 4 jours
'la semaine commence le lundi
Dim PremJanv As Date, PremJanvSuiv As Date, DateSem1 As Date, DateSem1Suiv As Date
    PremJanv = DateSerial(Year(DateJour), 1, 1)
    PremJanvSuiv = DateSerial(Year(DateJour) + 1, 1, 1)
    If Weekday(PremJanv, vbMonday) <= 4 Then
        DateSem1 = PremJanv - Weekday(PremJanv, vbMonday) + 1
    Else
        DateSem1 = PremJanv + 8 - Weekday(PremJanv, vbMonday)
    End If
    If Weekday(PremJanvSuiv, vbMonday) <= 4 Then
        DateSem1Suiv = PremJanvSuiv - Weekday(PremJanvSuiv, vbMonday) + 1
    Else
        DateSem1Suiv = PremJanvSuiv + 8 - Weekday(PremJanvSuiv, vbMonday)
    End If
    NumSem = 1 + (DateJour - DateSem1) \ 7
    If DateSem1 > DateJour Then
        NumSem = NumSem(PremJanv - 1)
    ElseIf DateJour >= DateSem1Suiv Then
        NumSem = NumSem(PremJanvSuiv)
    End If
End Function

Code HTML
HTML:
Function NumSem(DateJour As Date) As Long 'tototiti2008 sur XLD
'Calcule le numéro de semaine d'une année suivant cette norme :
'la semaine du 1er janvier n'est la semaine 1 que si elle contient au moins 4 jours
'la semaine commence le lundi
Dim PremJanv As Date, PremJanvSuiv As Date, DateSem1 As Date, DateSem1Suiv As Date
    PremJanv = DateSerial(Year(DateJour), 1, 1)
    PremJanvSuiv = DateSerial(Year(DateJour) + 1, 1, 1)
    If Weekday(PremJanv, vbMonday) <= 4 Then
        DateSem1 = PremJanv - Weekday(PremJanv, vbMonday) + 1
    Else
        DateSem1 = PremJanv + 8 - Weekday(PremJanv, vbMonday)
    End If
    If Weekday(PremJanvSuiv, vbMonday) <= 4 Then
        DateSem1Suiv = PremJanvSuiv - Weekday(PremJanvSuiv, vbMonday) + 1
    Else
        DateSem1Suiv = PremJanvSuiv + 8 - Weekday(PremJanvSuiv, vbMonday)
    End If
    NumSem = 1 + (DateJour - DateSem1) \ 7
    If DateSem1 > DateJour Then
        NumSem = NumSem(PremJanv - 1)
    ElseIf DateJour >= DateSem1Suiv Then
        NumSem = NumSem(PremJanvSuiv)
    End If
End Function

Code PHP
PHP:
Function NumSem(DateJour As Date) As Long 'tototiti2008 sur XLD
'Calcule le numéro de semaine d'une année suivant cette norme :
'la semaine du 1er janvier n'est la semaine 1 que si elle contient au moins 4 jours
'la semaine commence le lundi
Dim PremJanv As Date, PremJanvSuiv As Date, DateSem1 As Date, DateSem1Suiv As Date
    PremJanv = DateSerial(Year(DateJour), 1, 1)
    PremJanvSuiv = DateSerial(Year(DateJour) + 1, 1, 1)
    If Weekday(PremJanv, vbMonday) <= 4 Then
        DateSem1 = PremJanv - Weekday(PremJanv, vbMonday) + 1
    Else
        DateSem1 = PremJanv + 8 - Weekday(PremJanv, vbMonday)
    End If
    If Weekday(PremJanvSuiv, vbMonday) <= 4 Then
        DateSem1Suiv = PremJanvSuiv - Weekday(PremJanvSuiv, vbMonday) + 1
    Else
        DateSem1Suiv = PremJanvSuiv + 8 - Weekday(PremJanvSuiv, vbMonday)
    End If
    NumSem = 1 + (DateJour - DateSem1) \ 7
    If DateSem1 > DateJour Then
        NumSem = NumSem(PremJanv - 1)
    ElseIf DateJour >= DateSem1Suiv Then
        NumSem = NumSem(PremJanvSuiv)
    End If
End Function

Code HighLight
VB:
Function NumSem(DateJour As Date) As Long 'tototiti2008 sur XLD
'Calcule le numéro de semaine d'une année suivant cette norme :
'la semaine du 1er janvier n'est la semaine 1 que si elle contient au moins 4 jours
'la semaine commence le lundi
Dim PremJanv As Date, PremJanvSuiv As Date, DateSem1 As Date, DateSem1Suiv As Date
PremJanv = DateSerial(Year(DateJour), 1, 1)
PremJanvSuiv = DateSerial(Year(DateJour) + 1, 1, 1)
If Weekday(PremJanv, vbMonday) <= 4 Then
DateSem1 = PremJanv - Weekday(PremJanv, vbMonday) + 1
Else
DateSem1 = PremJanv + 8 - Weekday(PremJanv, vbMonday)
End If
If Weekday(PremJanvSuiv, vbMonday) <= 4 Then
DateSem1Suiv = PremJanvSuiv - Weekday(PremJanvSuiv, vbMonday) + 1
Else
DateSem1Suiv = PremJanvSuiv + 8 - Weekday(PremJanvSuiv, vbMonday)
End If
NumSem = 1 + (DateJour - DateSem1) \ 7
If DateSem1 > DateJour Then
NumSem = NumSem(PremJanv - 1)
ElseIf DateJour >= DateSem1Suiv Then
NumSem = NumSem(PremJanvSuiv)
End If
End Function

A+ à tous
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour