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.
A voir également:

10 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Bonjour,

comme ceci:

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


Voilà
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
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
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
que se passe-t'il quand tu rédiges comme tu le présentes?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
t'es-tu assuré d'avoir mis
option explicit
en début de module?
0
Ranger59 > yg_be Messages postés 23541 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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > 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
Ranger59 > yg_be Messages postés 23541 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
Utilisateur anonyme
 
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

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

Posez votre question
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
il est indispensable d'identifier sur quelle ligne de code se produit une erreur.
0
Ranger59 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Le problème se produit à la ligne Range("A2").Value = monTab(0)
0
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
Ranger59
 
J'ai déjà essayé avec:

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

et même message d'erreur
0
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
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
Utilisateur anonyme
 
Ici
monTab = Split(A1, "_") 

Tu demandes à splité la variable A1, pas la cellule A1..
0
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
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Utilisateur anonyme
 
il suffisait d'écrire
[A1]
pour récupérer le contenu de la cellule A1...
0
Utilisateur anonyme > yg_be Messages postés 23541 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
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