Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème manipulation feuille en VBA automation ...

2 réponses
Avatar
Laurent
Bonjour !

J'effectue depuis access l'ouverture d'excel et d'une feuille de données.

Je dois effectuer une recherche dans une colonne de la feuille afin d'en
retrouver une valeur précise. J'ai pour le moment fait une "bête" boucle
mais il y a probablement mieux ... non ? ;-)

Dès que la cellule est trouvée, j'aimerai en connaitre les références (n°
ligne), par quel code ?
En fait, j'aimerai activer ceci car je n'exclut pas de faire la recherche
autrement que par un bouclage, je n'ai donc plus l'indice de ligne ...

Finalement, existe-t-il une fonction simple qui permette de connaitre la
longueur d'une feuille excel ?

Pour fixer les idées, mon code access commence par ceci ...

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Chaine = "C:\aviation\data\prodlist\" & [xrecherche excel].Form![nom
fichier]
Set xlBook = xlApp.Workbooks.Open(Chaine)
Set ActiveBook = xlApp.Application.ActiveWorkbook

Compt = 1
ColRegistre = [xrecherche excel].Form![Registre] 'affecte la référence
de colonne pour la recherche
'SysCmd acSysCmdInitMeter, "Traitement en cours ", I
Registre = Me!Registre 'affecte la valeur à rechercher dans la feuille
Do Until Compt = i
If ActiveBook.Worksheets(1).Cells(Compt, ColRegistre) = Registre
Then
ActiveBook.Worksheets(1).Cells(Compt, ColRegistre).Select
...

Merci d'avance pour votre aide, vos indices car cela fait pas mal de temps
que je cherche en vain ...
Il existe des références web pour creuser ce domaine fort intéressant ?

Merci encore !

L@urent

2 réponses

Avatar
Pierre Fauconnier
Bonjour

Tu peux utiliser la méthode Find sur une sélection

Dim Cellule As Range
Set Cellule = Range("a:a").Find(what:="Martine", LookIn:=xlValues,
lookat:=xlWhole)
If Not Cellule Is Nothing Then MsgBox Cellule.Address

Cette méthode renvoie la cellule trouvée, si elle existe, et Nothing si Find
n'a rien trouvé. Tu récupères alors la propriété Address de l'objet Cellule,
que tu peux décliner en absolu, relatif ou mixte
Cellule.address(0,0) = A1
Cellule.address(1,0) = A$1
Cellule.address(0,1) = $A1
Cellule.address = cellule.address(1,1) = $A$1

Pour récupérer la ligne
Cellule.row
La colonne
Cellule.column

Pour trouver la dernière ligne utilisée de la colonne A, tu peux utiliser
range("a65536").end(xlup).row

Ok?


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"Laurent" a écrit dans le message de news:
42fb0d0e$0$17602$
Bonjour !

J'effectue depuis access l'ouverture d'excel et d'une feuille de données.

Je dois effectuer une recherche dans une colonne de la feuille afin d'en
retrouver une valeur précise. J'ai pour le moment fait une "bête" boucle
mais il y a probablement mieux ... non ? ;-)

Dès que la cellule est trouvée, j'aimerai en connaitre les références (n°
ligne), par quel code ?
En fait, j'aimerai activer ceci car je n'exclut pas de faire la recherche
autrement que par un bouclage, je n'ai donc plus l'indice de ligne ...

Finalement, existe-t-il une fonction simple qui permette de connaitre la
longueur d'une feuille excel ?

Pour fixer les idées, mon code access commence par ceci ...

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Chaine = "C:aviationdataprodlist" & [xrecherche excel].Form![nom
fichier]
Set xlBook = xlApp.Workbooks.Open(Chaine)
Set ActiveBook = xlApp.Application.ActiveWorkbook

Compt = 1
ColRegistre = [xrecherche excel].Form![Registre] 'affecte la référence
de colonne pour la recherche
'SysCmd acSysCmdInitMeter, "Traitement en cours ", I
Registre = Me!Registre 'affecte la valeur à rechercher dans la feuille
Do Until Compt = i
If ActiveBook.Worksheets(1).Cells(Compt, ColRegistre) = Registre
Then
ActiveBook.Worksheets(1).Cells(Compt, ColRegistre).Select
...

Merci d'avance pour votre aide, vos indices car cela fait pas mal de
temps
que je cherche en vain ...
Il existe des références web pour creuser ce domaine fort intéressant ?

Merci encore !






Avatar
Laurent
Merci pour la rapide réponse ...

... que je m'empresse de méditer ! ;-)




"Pierre Fauconnier" a écrit dans le
message de news:
Bonjour

Tu peux utiliser la méthode Find sur une sélection

Dim Cellule As Range
Set Cellule = Range("a:a").Find(what:="Martine", LookIn:=xlValues,
lookat:=xlWhole)
If Not Cellule Is Nothing Then MsgBox Cellule.Address

Cette méthode renvoie la cellule trouvée, si elle existe, et Nothing si
Find

n'a rien trouvé. Tu récupères alors la propriété Address de l'objet
Cellule,

que tu peux décliner en absolu, relatif ou mixte
Cellule.address(0,0) = A1
Cellule.address(1,0) = A$1
Cellule.address(0,1) = $A1
Cellule.address = cellule.address(1,1) = $A$1

Pour récupérer la ligne
Cellule.row
La colonne
Cellule.column

Pour trouver la dernière ligne utilisée de la colonne A, tu peux utiliser
range("a65536").end(xlup).row

Ok?


--
Pierre Fauconnier ()
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin (
proverbe

zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"Laurent" a écrit dans le message de news:
42fb0d0e$0$17602$
Bonjour !

J'effectue depuis access l'ouverture d'excel et d'une feuille de
données.



Je dois effectuer une recherche dans une colonne de la feuille afin
d'en


retrouver une valeur précise. J'ai pour le moment fait une "bête" boucle
mais il y a probablement mieux ... non ? ;-)

Dès que la cellule est trouvée, j'aimerai en connaitre les références
(n°


ligne), par quel code ?
En fait, j'aimerai activer ceci car je n'exclut pas de faire la
recherche


autrement que par un bouclage, je n'ai donc plus l'indice de ligne ...

Finalement, existe-t-il une fonction simple qui permette de connaitre
la


longueur d'une feuille excel ?

Pour fixer les idées, mon code access commence par ceci ...

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Chaine = "C:aviationdataprodlist" & [xrecherche excel].Form![nom
fichier]
Set xlBook = xlApp.Workbooks.Open(Chaine)
Set ActiveBook = xlApp.Application.ActiveWorkbook

Compt = 1
ColRegistre = [xrecherche excel].Form![Registre] 'affecte la
référence


de colonne pour la recherche
'SysCmd acSysCmdInitMeter, "Traitement en cours ", I
Registre = Me!Registre 'affecte la valeur à rechercher dans la
feuille


Do Until Compt = i
If ActiveBook.Worksheets(1).Cells(Compt, ColRegistre) = Registre
Then
ActiveBook.Worksheets(1).Cells(Compt, ColRegistre).Select
...

Merci d'avance pour votre aide, vos indices car cela fait pas mal de
temps
que je cherche en vain ...
Il existe des références web pour creuser ce domaine fort intéressant ?

Merci encore !