Excel VBA Retourner la position d'une cellule
Résolu
mathieu_m
-
michel_m Messages postés 16602 Date d'inscription Statut Contributeur Dernière intervention -
michel_m Messages postés 16602 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
A voir également:
- Excel VBA Retourner la position d'une cellule
- Retourner ecran pc - Guide
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
- Liste déroulante excel - Guide
- Excel compter cellule couleur sans vba - Guide
9 réponses
re,
philosophie générale: éviter les boucles tant que possible
(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ù)
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)
--
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)
--
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 :
mais je veux que tu m'explque, j'aime bien l'idée de le faire en une ligne, et j'apprends...
sinon 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
je reste perplexe
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
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