Excel - VBA - StrComp(Mid(CStr(Range()))) Problème
Résolu
HugoHerbomez
Messages postés
57
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Configuration: Windows 10 / Excel 2013
Je me permet d'écrire mon second problème de la journée, je suis dans un switch case et je ne sais pas comment tout fonctionne, surtout que j'ai tout empilé comme un GROS BARBARE :D Quelqu'un aurait-il l'obligeance de m'éclairer sur la solution? Afin que j'ai les résultats attendus, j'entends par là les résultats que les fonctions devraient normalement me donner !
Et voici respectivement mes résultat; je ne comprend vraiment pas pourquoi Cstr me change le mois et le jour, pourquoi Mid prend du plaisir à me donner quelque chose que je ne veux pas, et pourquoi StrComp me sort autre chose que -1, 0 ou 1 !
B12 et B13 = 10/01/2017
J'ai fusionné ces deux cellules pour un document plus épuré, donc je ne changerai pas cette fusion !
N18 : 01/10/2017 Je voudrais 10/01/2017
N19 : 09/07/1905 Je voudrais 2017
N20 : 00/01/1900 Je voudrais que anneeS est égale à 2017 !
Merci beaucoup,
Cordialement,
Hugo.
Configuration: Windows 10 / Excel 2013
Je me permet d'écrire mon second problème de la journée, je suis dans un switch case et je ne sais pas comment tout fonctionne, surtout que j'ai tout empilé comme un GROS BARBARE :D Quelqu'un aurait-il l'obligeance de m'éclairer sur la solution? Afin que j'ai les résultats attendus, j'entends par là les résultats que les fonctions devraient normalement me donner !
Dim anneeS As String With ActiveSheet Select Case .Name Case "Traitement Biocide" i = 12 .Range("N18") = CStr(.Range("B" & i & "").Value) .Range("N19") = Mid(CStr(.Range("B" & i & "").Value), 7, 4) .Range("N20") = StrComp(Mid(CStr(.Range("B" & i & "").Value), 7, 4),anneeS)
Et voici respectivement mes résultat; je ne comprend vraiment pas pourquoi Cstr me change le mois et le jour, pourquoi Mid prend du plaisir à me donner quelque chose que je ne veux pas, et pourquoi StrComp me sort autre chose que -1, 0 ou 1 !
B12 et B13 = 10/01/2017
J'ai fusionné ces deux cellules pour un document plus épuré, donc je ne changerai pas cette fusion !
N18 : 01/10/2017 Je voudrais 10/01/2017
N19 : 09/07/1905 Je voudrais 2017
N20 : 00/01/1900 Je voudrais que anneeS est égale à 2017 !
Merci beaucoup,
Cordialement,
Hugo.
1 réponse
Bonsoir Hugo, bonsoir le forum
peut-être comme ça :
Mais en N20 tu auras toujours -1, 0 ou 1 (regarde l'aide de la fonction CtrComp). Je ne comprends pas ce que tu veux dire par Je voudrais que anneeS est égale à 2017 !
peut-être comme ça :
With ActiveSheet Dim d As String Select Case .Name Case "Traitement Biocide" I = 12 d = CStr(.Range("B12").Value) .Range("N18") = CDate(d) .Range("N19") = Mid(d, 7, 4) .Range("N20") = StrComp(Mid(d, 7, 4), anneeS, 1) End Select End With
Mais en N20 tu auras toujours -1, 0 ou 1 (regarde l'aide de la fonction CtrComp). Je ne comprends pas ce que tu veux dire par Je voudrais que anneeS est égale à 2017 !
Un peu different mais ca se rejoint
Et comme vous le strcomp, comprends pas trop vu que AnneS pas affectee
je vous remercie pour l'aide apportée,
Mais en N20 tu auras toujours -1, 0 ou 1 (regarde l'aide de la fonction CtrComp). Je ne comprends pas ce que tu veux dire par Je voudrais que anneeS est égale à 2017 !
Justement mon résultat n'est pas le bon, je recommence tout mon problème avec vos mise à jour !
Alors j'ai ce code :
Et sur Excel j'ai les résultats suivant :
N16 : 10/01/2017 --> Là on est d'accord
N17 : 01/10/2017 --> Là le mois et le jour sont inversé mais ça passe
N18 : 09/07/1905 --> Là J'ai pas l'année je sais pas pourquoi
N19 : juil-05 --> Là J'ai pas l'année je sais pas pourquoi
N20 : 00/01/1900 --> Et ici j'ai tout sauf un 1, un 0 ou un -1
Donc ça ne va pas du tout !!!!! Sachant que ma cellule B12 et B13 sont fusionnés et qu'elle est égale à '10/01/2017'
De plus mes trois dernières lignes de code permettent d'incrémenter ma recherche de ligne en fonction de l'année entrée dans une texteBox, anneeS est donc déjà un String, je pense que le problème n'est pas de ce côté.
En gros tant que l'année entrée (anneeS) est plus petite que l'année dans la cellule, je passe à la suivante et ainsi de suite, c'est pour cela que je fait i = i +2, vu que mes cellules sont fusionnées 2 par 2 sur la colonne.
Pour information Les opérations de N16 à N20 sont juste des test, elles ne sont pas importante à mon code, c'est juste pour vous expliquer les résultat et les potentielles zones de problème(s).
Voilà :D
Mis à jour -----> J'ai fait la même opération sur N22,N23,N24,N25 et N26 et j'ai les bon résultats cette fois ci je ne comprend rien...
Pour éviter de tourner en rond, je pense qu'un fichier joint est nécessaire... Regarde du coté de https://www.cjoint.com/ (ou d'autres il y en a plein).
E si vous mettiez votre fichier a dispo, ce serait plus simple, vu que vous ne mettez a chaque fois qu'un morceau du puzzle
dans une texteBox, anneeS
Ah Oui, mais dans votre code elle est ou la valeur de cette textbox?
De plus
N17 : 01/10/2017 --> Là le mois et le jour sont inversé mais ça passe
Normal puisque nous vous avons donne ce qui marche et vous utilisez ce qui ne marche pas!!!!!!!!
Mais vos fonctions de départ m'ont aidé à améliorer mon code, merci beaucoup!