Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Récupérer les contenus des cellules tant que... VBA

6 réponses
Avatar
aa
Bonjour, j'ai une liste de donnée, quand je fais une sélection dans celle ci
je voudrais récupérer le contenu choisi puis faire un traitement sur cette
donnée. Jusque la ça va. Mais... si dans cette liste je choisi un nom
particulier commençant par un "#", alors je dois faire un traitement le
trairtement pour tous les éléments suivant de la liste jusqu'a la fin ou au
prochain "#".

un exemple pour illustrer
Liste
# bla bla
bla1
bla4
bla6
# bli bli
Bli1
Bli3
Bli2
Bli4
# truc
chose1
chose2

si je choisi # bli bli, je dois récupérer dans une variable VBA tous les bli
un par un pour les utilisers dans une autre partie de la macro.

pouvez vous m'aider ? dites moi si je ne suis pas claire

merci

6 réponses

Avatar
isabelle
est ce que la variable doit être égale à : # bli bliBli1Bli3Bli2Bli4
les derniers caractère sans espace ?

isabelle

Bonjour, j'ai une liste de donnée, quand je fais une sélection dans celle ci
je voudrais récupérer le contenu choisi puis faire un traitement sur cette
donnée. Jusque la ça va. Mais... si dans cette liste je choisi un nom
particulier commençant par un "#", alors je dois faire un traitement le
trairtement pour tous les éléments suivant de la liste jusqu'a la fin ou au
prochain "#".

un exemple pour illustrer
Liste
# bla bla
bla1
bla4
bla6
# bli bli
Bli1
Bli3
Bli2
Bli4
# truc
chose1
chose2

si je choisi # bli bli, je dois récupérer dans une variable VBA tous les bli
un par un pour les utilisers dans une autre partie de la macro.

pouvez vous m'aider ? dites moi si je ne suis pas claire

merci


Avatar
aa
bonjour et merci de ta réponse

non, je dois récupérer chaque valeur dans une seule variable réinitialisé à
chaque valeur

grosso modo

x = contenu de la cellule avec liste de validation
if left(x, 1)="#" then
for each je sais pas quoi
var = contenu de la cellule
traite
next
else
traite
end if
je ne suis pas très sure d'être explicite, excusez moi


est ce que la variable doit être égale à : # bli bliBli1Bli3Bli2Bli4
les derniers caractère sans espace ?

isabelle

Bonjour, j'ai une liste de donnée, quand je fais une sélection dans celle ci
je voudrais récupérer le contenu choisi puis faire un traitement sur cette
donnée. Jusque la ça va. Mais... si dans cette liste je choisi un nom
particulier commençant par un "#", alors je dois faire un traitement le
trairtement pour tous les éléments suivant de la liste jusqu'a la fin ou au
prochain "#".

un exemple pour illustrer
Liste
# bla bla
bla1
bla4
bla6
# bli bli
Bli1
Bli3
Bli2
Bli4
# truc
chose1
chose2

si je choisi # bli bli, je dois récupérer dans une variable VBA tous les bli
un par un pour les utilisers dans une autre partie de la macro.

pouvez vous m'aider ? dites moi si je ne suis pas claire

merci





Avatar
isabelle
comme ça ?

For Each c In Range("A2:A" & Range("A65536").End(xlUp).Row)
If Left(c, 1) = "#" Then
MsgBox "1er cas, traitement sur " & c
Else
MsgBox "2ème cas, traitement sur " & c
End If
Next

isabelle


bonjour et merci de ta réponse

non, je dois récupérer chaque valeur dans une seule variable réinitialisé à
chaque valeur

grosso modo

x = contenu de la cellule avec liste de validation
if left(x, 1)="#" then
for each je sais pas quoi
var = contenu de la cellule
traite
next
else
traite
end if
je ne suis pas très sure d'être explicite, excusez moi



est ce que la variable doit être égale à : # bli bliBli1Bli3Bli2Bli4
les derniers caractère sans espace ?

isabelle


Bonjour, j'ai une liste de donnée, quand je fais une sélection dans celle ci
je voudrais récupérer le contenu choisi puis faire un traitement sur cette
donnée. Jusque la ça va. Mais... si dans cette liste je choisi un nom
particulier commençant par un "#", alors je dois faire un traitement le
trairtement pour tous les éléments suivant de la liste jusqu'a la fin ou au
prochain "#".

un exemple pour illustrer
Liste
# bla bla
bla1
bla4
bla6
# bli bli
Bli1
Bli3
Bli2
Bli4
# truc
chose1
chose2

si je choisi # bli bli, je dois récupérer dans une variable VBA tous les bli
un par un pour les utilisers dans une autre partie de la macro.

pouvez vous m'aider ? dites moi si je ne suis pas claire

merci







Avatar
aa
encore merci isabelle, mais je suis désolé de ne pas arriver à mieux me faire
comprendre

j'essaye encore une fois, je pense que nous ne sommes pas loin de la solution
cette liste est un liste de choix que j'utilise avec Données, Validation
Liste
# bla bla
bla1
bla3
bla2
bla5
bla4
bla6
# bli bli
Bli1
Bli3
Bli2
Bli4
# truc
chose1
chose2

admettons que je récupère le choix dans la cellule A1. Je clique ensuite sur
le bouton qui lance ma macro et qui doit utiliser soit le nom simple, soit
tout les noms en dessous du # si c'est lui qui est choisi. jusqu'au prochain
# ou fin de la liste

Encore merci du mal que tu te donnes pour moi



comme ça ?

For Each c In Range("A2:A" & Range("A65536").End(xlUp).Row)
If Left(c, 1) = "#" Then
MsgBox "1er cas, traitement sur " & c
Else
MsgBox "2ème cas, traitement sur " & c
End If
Next

isabelle


bonjour et merci de ta réponse

non, je dois récupérer chaque valeur dans une seule variable réinitialisé à
chaque valeur

grosso modo

x = contenu de la cellule avec liste de validation
if left(x, 1)="#" then
for each je sais pas quoi
var = contenu de la cellule
traite
next
else
traite
end if
je ne suis pas très sure d'être explicite, excusez moi



est ce que la variable doit être égale à : # bli bliBli1Bli3Bli2Bli4
les derniers caractère sans espace ?

isabelle


Bonjour, j'ai une liste de donnée, quand je fais une sélection dans celle ci
je voudrais récupérer le contenu choisi puis faire un traitement sur cette
donnée. Jusque la ça va. Mais... si dans cette liste je choisi un nom
particulier commençant par un "#", alors je dois faire un traitement le
trairtement pour tous les éléments suivant de la liste jusqu'a la fin ou au
prochain "#".

un exemple pour illustrer
Liste
# bla bla
bla1
bla4
bla6
# bli bli
Bli1
Bli3
Bli2
Bli4
# truc
chose1
chose2

si je choisi # bli bli, je dois récupérer dans une variable VBA tous les bli
un par un pour les utilisers dans une autre partie de la macro.

pouvez vous m'aider ? dites moi si je ne suis pas claire

merci










Avatar
isabelle
bonjour,

si la liste de validation est en Feuil1 cellule A1
et la plage source en Feuil2 cellule A1:A100


'on trouve la position du mot choisi dans la liste de validation
i = Application.Match(Sheets("Feuil1").Range("A1"), Sheets("Feuil2").Range("A1:A100"), 0)
'on trouve la position du prochain # dans la liste de validation
y = Sheets("Feuil2").Range("A" & i & ":A100").Find(What:="#", LookAt:=xlPart).Row
Set plg = Sheets("Feuil2").Range("A" & i + 1 & ":A" & y - 1)
For Each c In plg
'traitement
Next

isabelle

encore merci isabelle, mais je suis désolé de ne pas arriver à mieux me faire
comprendre

j'essaye encore une fois, je pense que nous ne sommes pas loin de la solution
cette liste est un liste de choix que j'utilise avec Données, Validation
Liste
# bla bla
bla1
bla3
bla2
bla5
bla4
bla6
# bli bli
Bli1
Bli3
Bli2
Bli4
# truc
chose1
chose2

admettons que je récupère le choix dans la cellule A1. Je clique ensuite sur
le bouton qui lance ma macro et qui doit utiliser soit le nom simple, soit
tout les noms en dessous du # si c'est lui qui est choisi. jusqu'au prochain
# ou fin de la liste

Encore merci du mal que tu te donnes pour moi




comme ça ?

For Each c In Range("A2:A" & Range("A65536").End(xlUp).Row)
If Left(c, 1) = "#" Then
MsgBox "1er cas, traitement sur " & c
Else
MsgBox "2ème cas, traitement sur " & c
End If
Next

isabelle



bonjour et merci de ta réponse

non, je dois récupérer chaque valeur dans une seule variable réinitialisé à
chaque valeur

grosso modo

x = contenu de la cellule avec liste de validation
if left(x, 1)="#" then
for each je sais pas quoi
var = contenu de la cellule
traite
next
else
traite
end if
je ne suis pas très sure d'être explicite, excusez moi




est ce que la variable doit être égale à : # bli bliBli1Bli3Bli2Bli4
les derniers caractère sans espace ?

isabelle



Bonjour, j'ai une liste de donnée, quand je fais une sélection dans celle ci
je voudrais récupérer le contenu choisi puis faire un traitement sur cette
donnée. Jusque la ça va. Mais... si dans cette liste je choisi un nom
particulier commençant par un "#", alors je dois faire un traitement le
trairtement pour tous les éléments suivant de la liste jusqu'a la fin ou au
prochain "#".

un exemple pour illustrer
Liste
# bla bla
bla1
bla4
bla6
# bli bli
Bli1
Bli3
Bli2
Bli4
# truc
chose1
chose2

si je choisi # bli bli, je dois récupérer dans une variable VBA tous les bli
un par un pour les utilisers dans une autre partie de la macro.

pouvez vous m'aider ? dites moi si je ne suis pas claire

merci











Avatar
docm
Bonjour.

Si j'ai bien compris :

For Each c In Selection
If Left(c, 1) = "#" Then
x = x + 1
If x > 1 Then Exit For
Else
x = x + 1
'traitement de c.value
End If
Next

docm

"aa" a écrit dans le message de news:
Bonjour, j'ai une liste de donnée, quand je fais une sélection dans celle ci
je voudrais récupérer le contenu choisi puis faire un traitement sur cette
donnée. Jusque la ça va. Mais... si dans cette liste je choisi un nom
particulier commençant par un "#", alors je dois faire un traitement le
trairtement pour tous les éléments suivant de la liste jusqu'a la fin ou au
prochain "#".

un exemple pour illustrer
Liste
# bla bla
bla1
bla4
bla6
# bli bli
Bli1
Bli3
Bli2
Bli4
# truc
chose1
chose2

si je choisi # bli bli, je dois récupérer dans une variable VBA tous les bli
un par un pour les utilisers dans une autre partie de la macro.

pouvez vous m'aider ? dites moi si je ne suis pas claire

merci