Analyse chaîne de caractères

Résolu/Fermé
Ranger59 - 26 avril 2020 à 15:10
Whismeril Messages postés 19051 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 8 juin 2024 - 26 avril 2020 à 19:19
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.
A voir également:

10 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
26 avril 2020 à 16:26
Bonjour,

comme ceci:

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


Voilà
1
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
Whismeril Messages postés 19051 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 8 juin 2024 913
26 avril 2020 à 15:19
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
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
yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 1 474
26 avril 2020 à 15:57
que se passe-t'il quand tu rédiges comme tu le présentes?
0
yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 1 474
26 avril 2020 à 16:01
t'es-tu assuré d'avoir mis
option explicit
en début de module?
0
Ranger59 > yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024
Modifié le 26 avril 2020 à 18:39
=>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
yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 1 474 > Ranger59
26 avril 2020 à 18:08
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
Ranger59 > yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024
Modifié le 26 avril 2020 à 18:39
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
Whismeril Messages postés 19051 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 8 juin 2024 913
26 avril 2020 à 15:45
Je ne fais pas de VBA, mais comme tu t'y connais, je pensais que cette partie ne te poserait pas de problème...
0
Whismeril Messages postés 19051 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 8 juin 2024 913
26 avril 2020 à 15:46
0

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

Posez votre question
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
yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 1 474
26 avril 2020 à 16:13
il est indispensable d'identifier sur quelle ligne de code se produit une erreur.
0
Ranger59 > yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024
Modifié le 26 avril 2020 à 18:07
Le problème se produit à la ligne Range("A2").Value = monTab(0)
0
Whismeril Messages postés 19051 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 8 juin 2024 913
26 avril 2020 à 15:58
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
J'ai déjà essayé avec:

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

et même message d'erreur
0
Whismeril Messages postés 19051 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 8 juin 2024 913
26 avril 2020 à 16:04
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
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
Whismeril Messages postés 19051 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 8 juin 2024 913
26 avril 2020 à 16:42
Ici
monTab = Split(A1, "_") 

Tu demandes à splité la variable A1, pas la cellule A1..
0
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
Whismeril Messages postés 19051 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 8 juin 2024 913 > Ranger59
26 avril 2020 à 18:49
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
yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 1 474 > Whismeril Messages postés 19051 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 8 juin 2024
26 avril 2020 à 18:56
il suffisait d'écrire
[A1]
pour récupérer le contenu de la cellule A1...
0
Whismeril Messages postés 19051 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 8 juin 2024 913 > yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024
26 avril 2020 à 19:19
Merci, mais cela servira à Ranger plus qu'à moi, la dernière macro que j'ai faite date de plusieurs années...
0
Ranger59 > Whismeril Messages postés 19051 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 8 juin 2024
Modifié le 26 avril 2020 à 18:59
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