Excel VBA Retourner la position d'une cellule
Résolu
mathieu_m
-
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 18903 Date d'inscription Statut Contributeur Dernière intervention -
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
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
Configuration: Windows XP Firefox 3.5.2
9 réponses
-
moi aussi, car tu lis mal les explications qu'on te donne
-
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 -
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)
-- -
Bonjour,
essaies:
Columns(1).Find(Application.Max(Columns(1)), [A65536]).Row -
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 -
-
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 -
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 -
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