Recherche de valeurs

Résolu
Amartin6 Messages postés 44 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 21 septembre 2009 - 30 déc. 2007 à 20:30
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 30 déc. 2007 à 22:30
Bonjour,

Un peu débutant en VBA, après beaucoup d'essais, je recherche déserpérément un code me permettant d'obtenir la coordonnée ligne de la prochaine cellule pleine dans une colonne à partir d'une cellule base variable.

Càd...
A         B

XXX
XXX
XXX            Si on prend cette Cellule, le macro renvoie XXY
XXX
XXX
XXX
XXX   XXY
XXX
XXX
XXX            Et si on prend cette Cellule, le macro renvoie XXZ
XXX
XXX   XXZ

Merci de votre aide...

7 réponses

NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
30 déc. 2007 à 20:53
Bonjour

Tu peux utiliser un équivalent de ce code :

Dim lCase as range 'Case de départ

Dim i as long
i=1
do while lCase.Offset(i,0).Value="" '(i,0) ou (0,i), je ne me rappel plus de l'ordre
    i=i+1
loop

Valeur=lCase.offset(i,0).Value

Il y auras ptete une erreur si tu part endehors du tableau.
Ce code peut être long si la case est eloignée.

Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
3
Amartin6 Messages postés 44 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 21 septembre 2009
30 déc. 2007 à 21:45
Desolé mais je n'arrive pas à appliquer cette macro à la mienne...

Qqch comme ça serait-il possible?

For i = i to 20

Do while Cells(i,2).value = ""

N = N + 1

Loop

Next i
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
30 déc. 2007 à 21:52
Bonjour

Si Cells(i,2).Value="", boucle infinie.

ptete qu'un Exit For est ta solution ?

Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
30 déc. 2007 à 21:54
Si tu sélectionnes une cellule dans la colonne B, ça pourrait ressembler à
Ligne = ActiveCell.End(xlDown).Row

si n'importe quelle cellule peut être sélectionnée et que tu cherches la première occurrence en B en-dessous de la ligne sélectionnée
Ligne = Range("B" & ActiveCell.Row).End(xlDown).Row

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA.
3

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

Posez votre question
Amartin6 Messages postés 44 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 21 septembre 2009
30 déc. 2007 à 22:20
Merci MPi

C'est presque parfait mais quelques fois, il va chercher les valeurs plus haut!?
3
Amartin6 Messages postés 44 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 21 septembre 2009
30 déc. 2007 à 22:24
En posant les questions, on finit par trouver la réponses!

:-)

Merci à tous
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
30 déc. 2007 à 22:30
Logiquement, c'est impossible. À moins qu'il y ait une valeur dans une cellule. Un espace est considéré comme une valeur. Il pourrait aussi y avoir une valeur inscrite en blanc sur blanc et qui ne paraît pas... Sinon je ne vois pas.


Peut-être que si tu nous montrais ton bout de code, on pourrait y trouver un petit problème...(?)

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA.
0
Rejoignez-nous