Analyse chaîne de caractères

Résolu
Ranger59 -  
 Utilisateur anonyme -
Bonjour, je m'y connais en VBA mais pas assez pour:
dans une cellule A1 j'ai le contenu par exemple "1901080875_71277" (avant le "_" ce sont toujours 10 chiffres, après le "_" ce sont des chiffres et par moment des lettres (par exemple 021019 / SP050220 / Y200320)
Je souhaite en cliquant sur un bouton de macro copier les caractères avant le "_" dans la cellule A2 et copier les caractères après le "_" dans la cellule A3.
Merci.

10 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    comme ceci:

    Range("A2").Value = Split(Range("A1").Value, "_")(0)
    Range("A3").Value = Split(Range("A1").Value, "_")(1)


    Voilà
    1
    1. Ranger59
       
      Cette combinaison fonctionne !! :-)
      Néanmoins, quand je teste "1901059841_021015", les caractères "021015" sont collés en "21015", le 0 est supprimé et ça ça ne m'aide pas.

      J'ai bidouillé en changeant le Format de cellule directement dans la cellule A3, c'était nombre j'ai mis texte, et maintenant la macro garde bien le 0 après la copie.
      0
  2. Utilisateur anonyme
     
    Bonjour

    Tu peux utiliser l'instruction split, qui découpe une chaine en fonction d'un séparateur.
    Ici le séparateur sera "_".
    Le résultat est retourné sous la forme d'un tableau de string, il te suffit de mettre le premier item du tableau dans la cellule A2 et le second item dans la cellule A3.

    0
  3. Ranger59
     
    Ok, ça donne:

    Dim monTab() As String

    monTab = Split(A11, "_")

    Maintenant je ne sais pas rédiger correctement:

    Range("A2") = monTab(0)
    Range("A3") = monTab(1)
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      que se passe-t'il quand tu rédiges comme tu le présentes?
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      t'es-tu assuré d'avoir mis
      option explicit
      en début de module?
      0
    3. Ranger59 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      =>que se passe-t'il quand tu rédiges comme tu le présentes?
      Ce message d'erreur "L'indice n'appartient pas à la sélection"

      =>t'es-tu assuré d'avoir mis option explicit en début de module?
      Non je ne connais pas ce terme. Ca signifie quoi ?
      J'ai essayé

      Range("D3").Value = Split(Range("A11").Value, "_")(0)
      Range("D5").Value = Split(Range("A11").Value, "_")(1)

      et ça fonctionne néanmoins comme je dis plus bas à l'intervenant cs_Le Pivert, quand je teste "1901059841_021015", les caractères "021015" sont collés en "21015", le 0 est supprimé et ça ça ne m'aide pas.)
      J'ai bidouillé en changeant le Format de cellule directement dans la cellule A3, c'était nombre j'ai mis texte, et maintenant la macro garde bien le 0 après la copie.
      0
    4. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Ranger59
       
      ajouter
      option explicit
      en haut de chaque module te préviendra quand tu fais le genre d'erreur que tu as faite dans ton code.
      0
    5. Ranger59 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Y a bon, j'ai ajouté "option explicit" au dessus du "Sub...."
      et j'ai retiré la ligne "monTab = Split(A11, "_")"
      et ça marche

      J'ai essayé

      Range("D3").Value = Split(Range("A11").Value, "_")(0)
      Range("D5").Value = Split(Range("A11").Value, "_")(1)

      et ça fonctionne néanmoins comme je dis plus bas à l'intervenant cs_Le Pivert, quand je teste "1901059841_021015", les caractères "021015" sont collés en "21015", le 0 est supprimé et ça ça ne m'aide pas.)
      J'ai bidouillé en changeant le Format de cellule directement dans la cellule A3, c'était nombre j'ai mis texte, et maintenant la macro garde bien le 0 après la copie.
      0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Ranger59
     
    Je m'y connais oui mais par exemple j'ai tapé ça:

    Dim monTab() As String

    monTab = Split(A1, "_")

    Range("A2").Value = monTab(0)
    Range("A3").Value = monTab(1)

    et j'ai l'erreur "L'indice n'appartient pas à la sélection" et je ne sais pas comment résoudre ce problème.
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      il est indispensable d'identifier sur quelle ligne de code se produit une erreur.
      0
      1. Ranger59 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Le problème se produit à la ligne Range("A2").Value = monTab(0)
        0
  6. Utilisateur anonyme
     
    Ha en VBA, si je me souviens bien, l'index du premier item d'un tableau se paramètre dans les options.
    C'est soit 0, soit 1.
    Tu es peut-être configuré avec 1, et donc 0 n'existe pas
    0
  7. Ranger59
     
    J'ai déjà essayé avec:

    Range("A2").Value = monTab(1)
    Range("A3").Value = monTab(2)

    et même message d'erreur
    0
  8. Utilisateur anonyme
     
    A1 c’est une variable dans laquelle tu as mis le contenu de la cellule ?
    Parce si non, alors il n’y a rien dans A1 et donc forcément rien dans le résultat du split
    0
  9. Ranger59
     
    Non dans A1 j'incris moi-même, à la main, du contenu du genre "1901080875_71277" et ensuite je souhaite cliquer sur un bouton pour que ça me copie "1901080875" dans A2 et "71277" dans A3 (créer un bouton le nommer et lui affecter une macro je sais faire ;) )
    0
  10. Utilisateur anonyme
     
    Ici
    monTab = Split(A1, "_") 

    Tu demandes à splité la variable A1, pas la cellule A1..
    0
    1. Ranger59
       
      Cette ligne je l'avais tapé quand tu m'as parlé de Split mais j'ai le message "L'indice n'appartient pas à la sélection"
      0
      1. Utilisateur anonyme > Ranger59
         
        Ben oui c'est normal, la variable A1 est vide.
        Le code du pivert fonctionne parce que lui, il se sert du contenu de la cellule A1.

        Commencer ta question par
        je m'y connais en VBA
        est semble t il exagéré, tu ne sais pas faire la différence entre une cellule et une variable.
        Et du coup, j'ai basé mes réponses sur ce bout de phrase, même si j'ai rapidement eu un doute.

        Cependant une fois que tu avais trouvé que pour affecter une cellule, il fallait se servir de l'objet Range et de sa propriété Value, j'ai cru que tu réaliserais que pour la lire aussi....

        Le but d'une macro étant généralement d'interagir avec les données contenues dans les feuilles, lire et écrire dans un cellule est la base de la base. Et faire la différence entre ce qui est écrit dans les cellules et les variables des macros juste l'étape d'après.
        Je te conseille de revoir les bases de VBA avant d'annoncer
        je m'y connais en VBA
        et du coup perdre du temps avec des réponses qui considèrent qu'effectivement tu t'y connais.
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Utilisateur anonyme
         
        il suffisait d'écrire
        [A1]
        pour récupérer le contenu de la cellule A1...
        0
      3. Utilisateur anonyme > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Merci, mais cela servira à Ranger plus qu'à moi, la dernière macro que j'ai faite date de plusieurs années...
        0
      4. Ranger59 > Utilisateur anonyme
         
        Je n'ai pas expliqué le reste de ma macro après le Split mais de mon côté j'ai fait des boucles et des conditions et des copier coller, et sans demander de l'aide.
        Merci néanmoins pour tes rappels et explications.
        0