Fonction vba de reconnaissance de caractères

Fermé
adam.pierson Messages postés 23 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 17 janvier 2007 - 27 févr. 2006 à 13:15
 blackrock - 27 déc. 2008 à 13:26
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 726 Date d'inscription jeudi 30 septembre 2004 Statut Membre Dernière intervention 13 février 2010 180
27 févr. 2006 à 13:25
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 1858 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 22 mars 2024 1 527
27 févr. 2006 à 13:48
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 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 17 janvier 2007 7
27 févr. 2006 à 14:14
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 1858 Date d'inscription mercredi 19 janvier 2005 Statut Membre Dernière intervention 22 mars 2024 1 527 > adam.pierson Messages postés 23 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 17 janvier 2007
27 févr. 2006 à 14:20
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 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 17 janvier 2007 7
27 févr. 2006 à 13:57
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 Date d'inscription mardi 17 janvier 2006 Statut Membre Dernière intervention 17 janvier 2007 7
27 févr. 2006 à 15:00
C'est génial. Merci beaucoup
0

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

Posez votre question
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