Recuperer une liste en VBA

  • Initiateur de la discussion Initiateur de la discussion stef
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

stef

Guest
Bonjour,

je souhaiterai recuperer dans mon code une liste entrée par l'utilisateur dans une cellule.

ex:
Dans A1 l'utilisateur ecrit "1;2;3;5;6;8;9" (avec separateur ";" )
Comment faire pour pouvoir traiter une à une chaque valeur dans mon code VBA ??
Je prend la 1ere valeur "1" -->j'en fais un calcul
Je prend la 2eme valeur "2" -->j'en fais un autre calcul

ect....

je n'arrive pas à les cibler une à une .... :-(

merci pour votre aide ou meme une idée qui pourrait m'orienter.
 
moi
soit je modifierais la configuration de mon tableau de maniere a ce que l utilisateur rentre les donnees dans des cellules differentes si le tableau n est pas encore fait
soit si tu as deja les donnees, je les repartirais dans differentes colonnes (notepad rules 😉, fonction remplacer virgule par ca: " ")

voila
 
slt simon

que veux tu dire par : " (notepad rules 😉, fonction remplacer virgule par ca: " ") " je ne suis pas sure d'avoir bien compris !!! ;-)

sinon ce que tu propose c'est qque chose comme 'Données'-'Convertir...'

ce qui donne en VBA :

Selection.TextToColumns Destination:=Range("C8"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _: =Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1))

j'avais pensé qu'il etait possible de detecter un caractere dans une chaine de texte (dans mon cas detecter ";" ) et à partir de là, prendre les valeurs comprises entre deux ";".

Mais bon.. je cherche dans la voie de la conversion pour voir.

Merci
 
Salut Fred, Simon, le Forum

Humm c'est assez embarrassant comme histoire, je ne vois pas, comme te dit Simon, pourquoi avoir l'utilisateur qui écrit sans A1 "1;2;3;5;6;8;9"...
Alors qu'il a suffisamment de cellules...

Si c'est un import txt, alors "TextToColumn" devrait convenir comme tu viens de dire...

Et si vraiment tu cherche tes ";" alors il y a cette méthode :

PV = Application.WorksheetFunction.Search(";", TaString, 1)

PV retournera le numéro de la position du premier point vigule rencontré depuis le premier caractère... Mais pour la suite faudrait partir de l'endroit où le search à trouvé le précédent PV (Search(";", TaString, i))... d'où une usine à gaz pour pas grand chose... Enfin, je pense que tu te compliques la vie...

Bon Appétit
@+Thierry
 
ben en fait c'est une fonction supplementaire qui viens s'ajouter à une feuille dejà mise en forme et pleine à craquer d'infos et macros. D'où le besoin de compacter au max l'entrée utilisateur en une seule case sans modifier le reste.

Le 'TextToColumn' fera l'affaire

Merci à vous
 
Bonsoir à tous

J'avais créé une procédure il y a quelque temps pour extraire toutes valeurs numériques dans un texte . Cela doit pouvoir fonctionner aussi pour ton exemple .Tous les chiffres qui se suivent accolés , sans espaces , ou séparateurs , sont considérés comme constituants d'un nombre

Selon le nombre de caractères dans ta cellule la procédure pourra prendre un peu de temps

Dans le fichier joint , le traitement consiste à transférer chaque nombre de la cellule A1 vers une autre cellule ( à adapter selon ton utilisation )
Si cela peut t'aider….

Bonne soirée
Michel
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
1
Affichages
336
Réponses
3
Affichages
232
Retour