OVH Cloud OVH Cloud

en VBA première valeur d'une colonne

6 réponses
Avatar
lucienplexus
Bonjour,

Pour chercher la premi=E8re valeur non vide d'une colonne (ici A)
j'utilise le code suivant :

Function test(ByVal d As Range)
i =3D 0
Do Until d.Value <> ""
d=2EOffset(i, 0)
i =3D i + 1
Loop
End Function

Sub essai()
Dim c As Range
Set c =3D Sheets(1).Range("A1")
test c
z =3D c.value
msgbox (z)
End Sub

mon probl=E8me est que le r=E9sultat est affich=E9 en A1, ce que je ne
veux pas.
Il ne faut pas que la cellule A1 soit modifi=E8e par le code, je
souhaite r=E9cup=E9rer le r=E9sultat dans une variable.

Merci de votre aide

6 réponses

Avatar
Oliv'
* que je salut a écrit *:
Bonjour,

Pour chercher la première valeur non vide d'une colonne (ici A)
j'utilise le code suivant :



Il y a plus simple

toto = Range("a1").End(xlDown).Address
ca marche ?


--
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Pour me joindre : http://cerbermail.com/?V8r2o1YHl4
les sites références:
Excel :http://www.excelabo.net http://xcell05.free.fr/
http://dj.joss.free.fr/
http://frederic.sigonneau.free.fr/ http://www.excel-vba-francais.com/
Word : http://faqword.free.fr/
Outlook : http://faq.outlook.free.fr/
les archives : http://groups.google.com/group/microsoft.public.fr.outlook
OE6 : http://www.faqoe.com/
Sql : http://sqlpro.developpez.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



Il ne faut pas que la cellule A1 soit modifièe par le code, je
souhaite récupérer le résultat dans une variable.

Merci de votre aide


Avatar
Youky
MsgBox Range("A2").End(xlDown).Value
cela renvoie la valeur de la 1ere cellule non vide en A
Youky
a écrit dans le message de news:

Bonjour,

Pour chercher la première valeur non vide d'une colonne (ici A)
j'utilise le code suivant :

Function test(ByVal d As Range)
i = 0
Do Until d.Value <> ""
d.Offset(i, 0)
i = i + 1
Loop
End Function

Sub essai()
Dim c As Range
Set c = Sheets(1).Range("A1")
test c
z = c.value
msgbox (z)
End Sub

mon problème est que le résultat est affiché en A1, ce que je ne
veux pas.
Il ne faut pas que la cellule A1 soit modifièe par le code, je
souhaite récupérer le résultat dans une variable.

Merci de votre aide
Avatar
plexus
Merci oliv et youki

Vos 2 solutions fonctionnent mais ne correspondent pas totalement à ce
que je souhaite..

En fait je recopie une ligne d'une autre feuille sur la ligne 1 après
y avoir inséré une nouvelle ligne. Il se peut donc qu'il y ait des
valeurs dans la cellule A1, auquel cas je veux récupérer ces valeurs.
Vos 2 méthodes me retournent la première valeur suivante de la colone
dans ce cas.
ceci dit je peux peut-être m'en sortir en faisant une ligne d'entête
en 1
Merci
Avatar
AV
A adapter

MsgBox [index(A:A,match("*",A:A,0))]

AV
Avatar
Youky
Au lieu de partir à A1 part sur A3 à toi de voir Range("A2................
Youky
"plexus" ou A3com> a écrit dans le message de news:

Merci oliv et youki

Vos 2 solutions fonctionnent mais ne correspondent pas totalement à ce
que je souhaite..

En fait je recopie une ligne d'une autre feuille sur la ligne 1 après
y avoir inséré une nouvelle ligne. Il se peut donc qu'il y ait des
valeurs dans la cellule A1, auquel cas je veux récupérer ces valeurs.
Vos 2 méthodes me retournent la première valeur suivante de la colone
dans ce cas.
ceci dit je peux peut-être m'en sortir en faisant une ligne d'entête
en 1
Merci
Avatar
plexus
Ok Merci pour vos réponses

la solution avec entête me convient bien, car très simple.
Merci