Recuperer une liste en VBA

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.
 
S

simon

Guest
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
 
S

stef

Guest
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
 
@

@+Thierry

Guest
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
 
S

stef

Guest
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
 
M

michel

Guest
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

  • recuperation_valeur_dans_cellule.zip
    9.5 KB · Affichages: 63

Discussions similaires

Statistiques des forums

Discussions
313 030
Messages
2 094 571
Membres
106 054
dernier inscrit
Mohajer