Fonction vba de reconnaissance de caractères

adam.pierson Messages postés 23 Statut Membre -  
 blackrock -
Bonjour à tous

J'ai besoin de gros pros comme vous pour une fonction simple.

Je recherche une fonction excel ou vba !

J'ai une liste de références en colonne A. Je voudrais une fonction qui fasse que si les 4 premiers caractères ne sont pas des nombres, il insère des 0 pour que les 4 premiers caractères soient des nombres.

Quelqu'un a t il une idée SVP ?

Merci d'avance
A voir également:

5 réponses

zenon Messages postés 729 Statut Membre 180
 
J'ai cherché sans succès un moyen de savoir si une chaine de caractère est numérique...

Je pense que le plus simple est d'utiliser une condition du type:

If Left(Tonchamp,4)>O Then
TonChamp=TonChamp
Else
TonChamp = "0000"& Right(TonChamp),Len(TonChamp)-4)
End If
0
Armojax Messages postés 1916 Date d'inscription   Statut Membre Dernière intervention   1 529
 
Hello,

Je suppose que si ta chaine commence par moins de 4 caractères numériques il faut s'arranger pour qu'il y en ait au moins 4, en ajoutant les zéros nécessaires.
Tu peux essayer cette fonction :
Function INSNUM(Chaine)
  INSNUM = Chaine
  If Not IsNumeric(Left(Chaine, 1)) Then
   INSNUM = "0000" & Chaine
  ElseIf Not IsNumeric(Left(Chaine, 2)) Then
   INSNUM = "000" & Chaine
  ElseIf Not IsNumeric(Left(Chaine, 3)) Then
   INSNUM = "00" & Chaine
  ElseIf Not IsNumeric(Left(Chaine, 4)) Then
   INSNUM = "0" & Chaine
  End If
End Function
0
adam.pierson Messages postés 23 Statut Membre 7
 
Excuse moi de te déranger.

Voilà la macro que j'ai faite à partir de ton code.

Sub test()
Chaine = ActiveCell.FormulaR1C1
MsgBox Chaine
ActiveCell.Offset(0, 1).Select
Call INSNUM(Chaine)

End Sub

Function INSNUM(Chaine)
INSNUM = ActiveCell.FormulaR1C1
If Not IsNumeric(Left(Chaine, 1)) Then
INSNUM = "0000" & Chaine
ElseIf Not IsNumeric(Left(Chaine, 2)) Then
INSNUM = "000" & Chaine
ElseIf Not IsNumeric(Left(Chaine, 3)) Then
INSNUM = "00" & Chaine
ElseIf Not IsNumeric(Left(Chaine, 4)) Then
INSNUM = "0" & Chaine
ActiveCell.FormulaR1C1 = INSNUM
End If
End Function

Mais ça ne marche pas. Je suis désolé mais je suis pas un pro du VBA. Peux tu me la corriger STP. D'avance merci
0
Armojax Messages postés 1916 Date d'inscription   Statut Membre Dernière intervention   1 529 > adam.pierson Messages postés 23 Statut Membre
 
Non, non, plus simple...
Tu copies la macro Function telle quelle dans un module VBA de ton classeur.
Ensuite tu l'utilises comme une fonction Excel standard.
Par exemple, si tu as ta chaine en A1, tu peux écrire dans une autre cellule :
=INSNUM(A1)
qui te donnera le résultat.
0
adam.pierson Messages postés 23 Statut Membre 7
 
C'est sympa de m'avoir répondu.

Je vais tester les fonctions et je vous dit ce qu'il en est.
En tous cas merci
0
adam.pierson Messages postés 23 Statut Membre 7
 
C'est génial. Merci beaucoup
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
blackrock
 
Bonjour,

j'ai une colonne dans laquelle je voudrais qu'une fonction vba sous excel reconnaissance les termes similaires ( des mots ) en comparant les 4 premiers caractères de chaque mots, pour ensuite appliquer à la colonne d'à côté un nombre identique pour chaque terme similaire.

Merci.
0