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
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
A voir également:
- Excel VBA Retourner la position d'une cellule
- Aller à la ligne dans une cellule excel - Guide
- Retourner ecran windows - Guide
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Verrouiller cellule excel - Guide
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
27 août 2009 à 15:57
moi aussi, car tu lis mal les explications qu'on te donne
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
27 août 2009 à 15:19
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
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
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)
--
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)
--
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
27 août 2009 à 14:45
Bonjour,
essaies:
Columns(1).Find(Application.Max(Columns(1)), [A65536]).Row
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 :
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