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

5 réponses

  1. 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
  2. Armojax Messages postés 1863 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
    1. 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
      1. Armojax Messages postés 1863 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
  3. 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
  4. adam.pierson Messages postés 23 Statut Membre 7
     
    C'est génial. Merci beaucoup
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

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