A voir également:
- Fonction instr vba
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Excel compter cellule couleur sans vba - Guide
- Fonction remplacer sur word - Guide
4 réponses
Bonjour
J'ai l'impression que tu as inversé les deux paramètres du InStr :
J'ai l'impression que tu as inversé les deux paramètres du InStr :
If Not (InStr( AllAuthors, "; " & LocalAuthors(i)) Or InStr( AllAuthors,LocalAuthors(i) & " ;")) Then
Bonjour.
Merci de ta réponse rapide, mais cela ne marche toujours pas. J'ai tenté autre chose (cette fois qui marche), mais c'est assez moche.
(commenté pour tester ta solution à côté). J'arrive avec ce code à 1080 résultats, avec l'autre à plus de 1300. Donc il y a bien un problème d'utilisation de InStr.
Une solution ?
Merci de ta réponse rapide, mais cela ne marche toujours pas. J'ai tenté autre chose (cette fois qui marche), mais c'est assez moche.
'IsInside = True 'For Each Author In Split(AllAuthors, " ; ") ' If Author = LocalAuthors(i) Then ' IsInside = False ' End If 'Next Author 'If IsInside And AllAuthors <> "" Then ' AllAuthors = AllAuthors & " ; " & LocalAuthors(i) ' Range("G4").Value = Range("G4").Value + 1 'End If 'If AllAuthors = "" Then ' AllAuthors = LocalAuthors(i) ' Range("G4").Value = Range("G4").Value + 1 'End If
(commenté pour tester ta solution à côté). J'arrive avec ce code à 1080 résultats, avec l'autre à plus de 1300. Donc il y a bien un problème d'utilisation de InStr.
Une solution ?
Tu trouves 1080 résultats dans un cas et 1300 dans l'autre, mais lequel des deux est exact ? Y en a-t-il seulement un des deux ? As'tu comparé les listes pour voir où était la différence, ça donnerait une idée.
Déjà, dans ton premier script, il y avait plusieurs incohérences :
- Tu utilises LocalAuthors(i) : ton i devrait donc aller de LBound(LocalAuthors) à UBound(LocalAuthors) et non pas de 0 à UBound(LocalAuthors)-LBound(LocalAuthors). Comme UBound(LocalAuthors) est probablement à 0, ça ne change peut-être pas grand chose
- Tu recherches LocalAuthors(i) accompagné d'un point virgule (avant ou après) dans AllAuthors. Mais le premier nom que tu ajoutes n'est pas suivi d'un point virgule. S'il apparaît deux fois de suite, il sera mis deux fois dans AllAuthors.
Mais ces détails n'expliquent pas ton écart 1080/1300.
Déjà, dans ton premier script, il y avait plusieurs incohérences :
- Tu utilises LocalAuthors(i) : ton i devrait donc aller de LBound(LocalAuthors) à UBound(LocalAuthors) et non pas de 0 à UBound(LocalAuthors)-LBound(LocalAuthors). Comme UBound(LocalAuthors) est probablement à 0, ça ne change peut-être pas grand chose
- Tu recherches LocalAuthors(i) accompagné d'un point virgule (avant ou après) dans AllAuthors. Mais le premier nom que tu ajoutes n'est pas suivi d'un point virgule. S'il apparaît deux fois de suite, il sera mis deux fois dans AllAuthors.
Mais ces détails n'expliquent pas ton écart 1080/1300.