Re tout le monde,
gml, vite fait :
-je te commenterai le code dans la soirée, c'est dimanche et la home family a des priorité devant la famille XLD
-C'est bien de déclarer tes variables, mais fait le complètement, Hervé m'a assez enquiquiné avec ça il ya longtemps :whistle: et il avait savrément raison
-Ta syntaxe incomplète de Mid est dangereuse, essaies avec un nom qui a 7 caractères, vois dans l'aide VBA à, MId, Right et Left entre autres..
- Les choses précisées, je te joins une nouvelle piste qui tiens compte du fait que tu puisses avoir un nom avec un nombre à 2 digits, extrapolation facile pour plus si besoin.
Sub Plop2()
Dim I As Integer
Dim Nbr As Integer
I = 1
If IsNumeric(Right(Range('B5').Name.Name, I)) = True Then
Nbr = Right(Range('B5').Name.Name, I)
I = 2
If IsNumeric(Right(Range('B5').Name.Name, I)) = True Then
Nbr = Right(Range('B5').Name.Name, I)
End If
End If
MsgBox Nbr
End Sub
bon courage
à tout à l'heure pour les commentaires,
édition : comme promis, les commentaires :
Là, on a plus de précisions, du coup le code peut-être vu autrement, la réponse suivante de Charly2 montre que d’autres précisions peuvent apporter encore d’autres approches, d’où l’importance de bien cerner sa question…
Là on sait que le nombre recherché est toujours en fin de chaîne (on ne sait pas s’il est à un, deux ou plus chiffres),.
Là on emploie la fonction IsNumeric qui nous retourne Vrai ou faux selon que la chaîne analysée puisse être ou non un nombre. On emploie alors la fonction Right pour déterminer si le dernier K est un chiffre (si faux, on se fiche de savoir s’il y en a avant selon ta demande), si Oui, on met ce chiffre dans la variable Nbr.
Du coup, on teste de la même façon les deux derniers K, s’il c’est un nombre, on l’affecte à la valeur de Nbr.
Comme l’argument I de Right donne le nb de K retournés, on le met à 1 en début de procédure, et il passe à 2 si on a trouvé un chiffre en dernier pour tester les deux derniers digits….
Le message te retourne ici le nombre trouvé !
Quand au niveau de la déclaration des variables, c’est très utile de les déclarer ET de donner leur Type, ça évite pas mal d’erreurs en direct à la saisie et réagit clairement au débogage ! Déclare Dim Pop as Boolean par exemple, si tu inscris ensuite pop = la saisie rapide de VBA te proposera tout de suite True ou false, si tu mets une chaîne de K à la place, dès le lancement, tu auras une incompatibilité de type bien claire dessus, ce qui t’évite des recherches plus floues.. (si tu mets une valeur, c’est plus complexe, mais logique, CF l’aide). Ca te permet en plus de structurer tout de suite ta pensée par rapport à tes intentions, si tu ne sais pas le type de ta variable (qui peut être Variant), c’est que tu ne cernes pas quelque chose. De plus pour les appli importantes, ça te permet de les optimiser en gagnant des octets !
Bonne nuit,
Brico
Message édité par: Bricofire, à: 13/02/2006 00:52