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

Questions à tiroir : champ et contrôle en VBA

7 réponses
Avatar
Joël GARBE
Bonsoir à tous !

Retour de vacances, et déjà des questions à poser (à priori pas trop
compliquées mais comme je sèche ...)

J'ai pu déterminer le nom du sous-formulaire active, et la requête source de
ce sous-formulaire.

Ce que je souhaite faire :

En VBA, faire un copier-coller d'une plage d'un fichier Excel vers le
formulaire en cours, par l'intermédiaire d'un menu.

En passant par le presse-papier, je peux récupérer les valeurs des
différentes cellules de la plage source Excel.

Je voudrais automatiquement envoyer la valeur de la première cellule dans le
contrôle actif,
Si une seconde colonne existe dans la plage excel, envoyer la valeur
correspondante dans le contrôle situé à côté.
Si une seconde ligne existe dans la plage excel, envoyer la valeur
correspondant dans l'enregistrement suivant du sous-formulaire
etc...

Ce que je ne sais pas faire :
Déterminer le contrôle actif du sous-formulaire actif
Déterminer le contrôle situé à droite du contrôle actif dans le formulaire

Je pense que ces deux procédure me permettrait d'accomplir ma fonctionnalité
de "Copier-Coller", à moins qu'il existe beaucoup plus simple ?

Vous remerciant par avance...
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr

7 réponses

Avatar
Raymond [mvp]
Bonsoir Joel.

Juste quelques idées pour faire avancer.

je passerais plutôt par automation ce qui aurait l'avantage de traiter
cellule par cellule et envoyer ces cellules dans le champ correspondant.
Je nommerais les contrôles du formulaire avec le même nom suivi d'un indice,
ce qui aurait l'avantage de donner le nom du premier contrôle à remplir et
de boucler dessus.
Tu devrais retrouver le nom du contrôle actif avec
Screen.ActiveControl.Name ou Screen.PreviousControl.Name, selon la position
où tu te trouves et selon que tu as cliqué ou non sur un bouton.
faut bien commencer ?
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
430a1246$0$7868$
Bonsoir à tous !

Retour de vacances, et déjà des questions à poser (à priori pas trop
compliquées mais comme je sèche ...)

J'ai pu déterminer le nom du sous-formulaire active, et la requête source
de ce sous-formulaire.

Ce que je souhaite faire :

En VBA, faire un copier-coller d'une plage d'un fichier Excel vers le
formulaire en cours, par l'intermédiaire d'un menu.

En passant par le presse-papier, je peux récupérer les valeurs des
différentes cellules de la plage source Excel.

Je voudrais automatiquement envoyer la valeur de la première cellule dans
le contrôle actif,
Si une seconde colonne existe dans la plage excel, envoyer la valeur
correspondante dans le contrôle situé à côté.
Si une seconde ligne existe dans la plage excel, envoyer la valeur
correspondant dans l'enregistrement suivant du sous-formulaire
etc...

Ce que je ne sais pas faire :
Déterminer le contrôle actif du sous-formulaire actif
Déterminer le contrôle situé à droite du contrôle actif dans le formulaire

Je pense que ces deux procédure me permettrait d'accomplir ma
fonctionnalité de "Copier-Coller", à moins qu'il existe beaucoup plus
simple ?

Vous remerciant par avance...
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr



Avatar
Joël GARBE
Merci Raymond,

Je vais commencer par cette voie-là et reviendrai informer du résultat
(j'espère demain).

C'est vrai que automation devrait être plus simple à utiliser... Il devrait
y avoir une raison (probablement non valable) pour laquelle je n'avais pas
retenu cette solution ?... comme par exemple, comment revenir simplement
d'Excel à Access, mais comme cet aspect se retrouve avec l'autre solution,
cette raison n'est effectivement pas valable !

Bonne soirée...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message de
news:
Bonsoir Joel.

Juste quelques idées pour faire avancer.

je passerais plutôt par automation ce qui aurait l'avantage de traiter
cellule par cellule et envoyer ces cellules dans le champ correspondant.
Je nommerais les contrôles du formulaire avec le même nom suivi d'un
indice, ce qui aurait l'avantage de donner le nom du premier contrôle à
remplir et de boucler dessus.
Tu devrais retrouver le nom du contrôle actif avec
Screen.ActiveControl.Name ou Screen.PreviousControl.Name, selon la
position où tu te trouves et selon que tu as cliqué ou non sur un bouton.
faut bien commencer ?
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
430a1246$0$7868$
Bonsoir à tous !

Retour de vacances, et déjà des questions à poser (à priori pas trop
compliquées mais comme je sèche ...)

J'ai pu déterminer le nom du sous-formulaire active, et la requête source
de ce sous-formulaire.

Ce que je souhaite faire :

En VBA, faire un copier-coller d'une plage d'un fichier Excel vers le
formulaire en cours, par l'intermédiaire d'un menu.

En passant par le presse-papier, je peux récupérer les valeurs des
différentes cellules de la plage source Excel.

Je voudrais automatiquement envoyer la valeur de la première cellule dans
le contrôle actif,
Si une seconde colonne existe dans la plage excel, envoyer la valeur
correspondante dans le contrôle situé à côté.
Si une seconde ligne existe dans la plage excel, envoyer la valeur
correspondant dans l'enregistrement suivant du sous-formulaire
etc...

Ce que je ne sais pas faire :
Déterminer le contrôle actif du sous-formulaire actif
Déterminer le contrôle situé à droite du contrôle actif dans le
formulaire

Je pense que ces deux procédure me permettrait d'accomplir ma
fonctionnalité de "Copier-Coller", à moins qu'il existe beaucoup plus
simple ?

Vous remerciant par avance...
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr







Avatar
Raymond [mvp]
revenir d'excel à access ne sera pas le plus compliqué à faire.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
430a232f$0$1704$
Merci Raymond,

Je vais commencer par cette voie-là et reviendrai informer du résultat
(j'espère demain).

C'est vrai que automation devrait être plus simple à utiliser... Il
devrait y avoir une raison (probablement non valable) pour laquelle je
n'avais pas retenu cette solution ?... comme par exemple, comment revenir
simplement d'Excel à Access, mais comme cet aspect se retrouve avec
l'autre solution, cette raison n'est effectivement pas valable !

Bonne soirée...

--

Bien cordialement,

Joël GARBE


Avatar
Joël GARBE
Re ;-)

Question compémentaire ...

En imaginant que l'utilisateur a sélectionné lui-même une plage dans un
classeur excel ...

Comment accéder à Excel sans ouvrir une nouvelle session excel..

la commande : Set objXL = excel.Application
ouvre une nouvelle session, mais ne pointe pas sur le classeur déjà ouvert
(sauf erreur de ma part !)
et les instructions suivantes :

Set objXL = excel.Application
With objXL
.ActiveWorkbook.Name
End With

génère une erreur sur .ActiveWorkbook.Name (utilisation incorrecte de la
propriété name)

Mais comme je fatigue déjà... bonne soirée
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message de
news:
revenir d'excel à access ne sera pas le plus compliqué à faire.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
430a232f$0$1704$
Merci Raymond,

Je vais commencer par cette voie-là et reviendrai informer du résultat
(j'espère demain).

C'est vrai que automation devrait être plus simple à utiliser... Il
devrait y avoir une raison (probablement non valable) pour laquelle je
n'avais pas retenu cette solution ?... comme par exemple, comment revenir
simplement d'Excel à Access, mais comme cet aspect se retrouve avec
l'autre solution, cette raison n'est effectivement pas valable !

Bonne soirée...

--

Bien cordialement,

Joël GARBE






Avatar
Raymond [mvp]
Bonjour.

il te faut utiliser getObject pour ouvrir le même objet excel.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
430a3d86$0$5392$
Re ;-)

Question compémentaire ...

En imaginant que l'utilisateur a sélectionné lui-même une plage dans un
classeur excel ...

Comment accéder à Excel sans ouvrir une nouvelle session excel..

la commande : Set objXL = excel.Application
ouvre une nouvelle session, mais ne pointe pas sur le classeur déjà ouvert
(sauf erreur de ma part !)
et les instructions suivantes :

Set objXL = excel.Application
With objXL
.ActiveWorkbook.Name
End With

génère une erreur sur .ActiveWorkbook.Name (utilisation incorrecte de la
propriété name)

Mais comme je fatigue déjà... bonne soirée
--

Bien cordialement,

Joël GARBE


Avatar
Joël GARBE
Super Cool !!!

Merci Raymond et bonne journée !

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message de
news: %
Bonjour.

il te faut utiliser getObject pour ouvrir le même objet excel.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
430a3d86$0$5392$
Re ;-)

Question compémentaire ...

En imaginant que l'utilisateur a sélectionné lui-même une plage dans un
classeur excel ...

Comment accéder à Excel sans ouvrir une nouvelle session excel..

la commande : Set objXL = excel.Application
ouvre une nouvelle session, mais ne pointe pas sur le classeur déjà
ouvert (sauf erreur de ma part !)
et les instructions suivantes :

Set objXL = excel.Application
With objXL
.ActiveWorkbook.Name
End With

génère une erreur sur .ActiveWorkbook.Name (utilisation incorrecte de la
propriété name)

Mais comme je fatigue déjà... bonne soirée
--

Bien cordialement,

Joël GARBE






Avatar
Joël GARBE
Bonsoir Raymond,

Pour information et suivi de tes conseils...

En les appliquant (tes conseils), tout va nettement mieux... Parfait

Merci à toi !
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"Raymond [mvp]" a écrit dans le message de
news: %
Bonjour.

il te faut utiliser getObject pour ouvrir le même objet excel.

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Joël GARBE" a écrit dans le message de news:
430a3d86$0$5392$
Re ;-)

Question compémentaire ...

En imaginant que l'utilisateur a sélectionné lui-même une plage dans un
classeur excel ...

Comment accéder à Excel sans ouvrir une nouvelle session excel..

la commande : Set objXL = excel.Application
ouvre une nouvelle session, mais ne pointe pas sur le classeur déjà
ouvert (sauf erreur de ma part !)
et les instructions suivantes :

Set objXL = excel.Application
With objXL
.ActiveWorkbook.Name
End With

génère une erreur sur .ActiveWorkbook.Name (utilisation incorrecte de la
propriété name)

Mais comme je fatigue déjà... bonne soirée
--

Bien cordialement,

Joël GARBE