Excel VBA Retourner la position d'une cellule

Résolu/Fermé
mathieu_m - 27 août 2009 à 14:08
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 27 août 2009 à 16:48
Bonjour,

Je débute juste avec cet outil
Je cherche à récupérer la position d'une cellule, je ne trouve pas comment procéder

J'ai un tableau de N lignes, chaque ligne commence par un indice incrémenté de 1 à N
Je voudrais qu'un bouton ajoute une ligne entre N-1 et N, qui sera ensuite remplie

Problème :
Je peux repérer la ligne N grâce à MAX(Colonne A), qui trouve l'indice N

Application.WorksheetFunction.Max(Columns(1))

Mais je ne veux pas la valeur mais la position de la valeur

Comment faire ??

Merci pour vos propositions

mathieu
A voir également:

9 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
27 août 2009 à 15:57
moi aussi, car tu lis mal les explications qu'on te donne
4
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
27 août 2009 à 15:19
re,
philosophie générale: éviter les boucles tant que possible

dim lig as long
lig=Columns(1).Find(Application.Max(Columns(1)), [A65536]).Row 

(testée chez moi :OK)
[A65536] forme abrégée pour feignant (donc j'utilise) de range("A65536")
regarde Find dans l'aide:
FInd(what,after)
la recherche commence APRES la cellule donc après A65536 (XL<2007) on a A1

Dans ton 1° message tu disais chercher la position de la valeur maxi, instruction qu'on ne retrouve pas dans la copie de ta macro.

Si tu cherches la dernière ligne occupée (au cas où)
lig=range("A65536").end(xlup).row
2
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
27 août 2009 à 16:48
mais je trouve ta réponse un poil désagréable
Bon, utilise alors la méthode D.T.T.S

pour trouver avec une valeur résultant d'une formule, dans la méthode FIND, comme tout le monde quelque soit son niveau, voir l'aide Microsoft( à lookin)
--
1
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
27 août 2009 à 14:45
Bonjour,

essaies:
Columns(1).Find(Application.Max(Columns(1)), [A65536]).Row
0

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

Posez votre question
merci

malheureusement j'obtiens le message "Erreur d'excecution '91': Variable objet ou variable de bloc With non définie

Et comme je ne comprend pas la ligne (syntaxe [A65536] ? type de sortie ?) j'ai du mal à comprendre

sinon j'ai réussi en contournant :
'------------------------------------
' get last line position
Dim index, new_index, line As Integer

line = 8
index_last = 0
index_new = Cells(line, 1).Value

Do While index_new > index_last
    line = line + 1
    index_last = index_new
    index_new = Cells(line, 1).Value
Loop

'------------------------------------
' add a line before the last one
Rows(line - 1).Insert Shift:=xlDown



mais je veux que tu m'explque, j'aime bien l'idée de le faire en une ligne, et j'apprends...

sinon merci
0
je veux bien que tu m'expliques, et pas je veux !!

je ne t'ordonne rien !

merci
0
dans ma macro la position est la variable line, utilisée ensuite pour l'ajout de ligne

merci encore pour ces explications, mais le code proposé pose problème sur ma machine

excel 2007

la ligne suivante me renvoie la même erreur

Dim Reponse As Range
Reponse = Columns(1).Find(2)


je reste perplexe
0
dans le doute j'ai réessayé la formule donnée, ça fonctionne

je ne sais pas ce que j'ai mal fait la première fois, et qui m'a conduit à 20 minutes de recherche sans succès
n'aboutissant qu'a la simplification, hasardeuse je l'admet, de l'expression proposée pour comprendre ce qui clochait

je ne sais donc pas ce que j'ai mal lu, puisqu'à ton avis c'est ma grande faute

désolé donc, de t'avoir fait perdre patience, mais je trouve ta réponse un poil désagréable
ma première expérience avec le vba sur excel datant de ce matin, 10h, je me donne le droit de taper à côté

merci pour tout

mathieu
0
finalement il semblerait que cela ne fonctionne que si la colonne se termine par une donnée inscrite en dur
si elle est issue d'une formule, ça plante comme indiqué message #2

tant pis

mathieu
0