• Initiateur de la discussion Initiateur de la discussion accoman
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

accoman

XLDnaute Junior
bonjour à tous
voilà j'ai deux classeur 1 client, 1 comptabilité
comment a partir du classeur client pouvoir ouvrir l'usurform du classeur comptabilité afin de rentrer les infos de payement en comptabilité
amicalement
 
Re : Classeur a classeur

Bonjour accoman, salut Hasco, Staple,

Par exemple, dans le fichier "comptabilité.xls", on peut ouvrir l'UserForm par cette macro placée dans un Module :

Code:
Sub USF()
Userform1.Show
End Sub

Alors dans le fichier "client.xls" on peut lancer la macro précédente par :

Code:
Sub ExecuteMacro()
Application.Run "comptabilité.xls!USF"
End Sub

A+
 
Re : Classeur a classeur

bonjour et merci pour la rapiditer de vos réponses
dans le classeur comptabilité (compta_2010) j'ai

Public ActCtl As String 'ne pas effacer ces lignes !
Public ws As String

Sub affusf()
ws = Application.Caller
UserForm1.Show
End Sub

j'ai donc mis dans le classeur client

Sub test()
Application.Run "Compta_2010.xlsm!affusf"
End Sub

je me retrouve avec une erreur 1004 erreur définie par l'application ou l'objet

amicalement
 
Re : Classeur a classeur

Re,

Erreur à cause de Application.Caller je suppose...

Alors pourquoi pas, dans le classeur "compta_2010" :

Code:
Sub affusf()
ws = Application.Caller
USF
End Sub

Sub USF()
UserForm1.Show
End Sub

Et dans le classeur "client" :

Code:
Sub test()
Application.Run "Compta_2010.xlsm!USF"
End Sub

Edit : bien sûr ws n'est alors pas redéfini, il faudra peut-être modifier les autres macros qui se servent de cette variable...

A+
 
Dernière édition:
Re : Classeur a classeur

Re accoman,

Correctif : vous pouvez utiliser telles quelles les macro de votre post #5.

Simplement ne pas déclarer ws As String => Public ws

Application.Caller renvoie alors sur ws une valeur d'erreur (mais sans bug).

Dans les macros qui utilisent ws, il faut prévoir le cas ou ws est une erreur :

Code:
If IsError(ws) Then
'------
End If

A+
 
Re : Classeur a classeur

bonjour
sa ne fonctionne pas
dans le classeur clients j'ai mis

Sub ExecuteMacro()
Application.Run "Compta_2010.xlsm!USF"
End Sub

et dans le classeur Compta_2010

Public ActCtl As String 'ne pas effacer ces lignes !
Public ws As String

Sub affusf()
ws = Application.Caller
USF
End Sub

Sub USF()
UserForm1.Show
If IsError(ws) Then
'------
End If
End Sub

je suis débutant et le classeur compta a ete réaliser grace au concour et l'aide de kjin je n'osse pas trop y toucher
 
Re : Classeur a classeur

Bonjour accoman,

L'USF est normalement lancé sous 2 formes différentes par les boutons Registre Banque et Registre Caisse, afin de traiter ensuite les feuilles de même nom.

Quel feuille voulez-vous traiter quand on ouvrira l'USF avec la macro du fichier "Client" ?

Le problème est très facile à résoudre, mais il faut que vous nous indiquiez la feuille...

A+
 
Re : Classeur a classeur

Re,

Finalement, tout ce qui a été dit précédemment est nul et non avenu...

C'est très simple :

1) Ouvrir les 2 fichiers.

2) Dans le fichier "Client", normalement pas besoin de macro :

- copier les 2 boutons de la feuille Sommaire du fichier "Compta_2010"

- vérifier que la macro affectée à ces boutons s'appelle bien Compta_2010.xls!affusf (ou .xlsm suivant le format du fichier).

3) Dans le fichier "Compta_2010", dans le code de UserForm1, au début de la macro UserForm_Initialize(), ajouter simplement ce code qui active le fichier :

Code:
ThisWorkbook.Activate

Fichiers joint.

A+
 

Pièces jointes

Re : Classeur a classeur

Bonjour job75
merci pour la rapiditer de tes reponces.
Comment faire la même chose en restant dans le classeur client sans etre basculer dans le classeur compta.???

amicalement

ps la feuiile a traiter et registre caisse
 
Dernière édition:
Re : Classeur a classeur

Re,

Comment faire la même chose en restant dans le classeur client sans etre basculer dans le classeur compta.???

Alors dans le code de l'UserForm, devant tous les noms de feuilles, il faut mettre ThisWorkbook., ou encore utiliser :

Code:
With ThisWorkbook
'le code---
End With

avec un point . devant le nom des feuilles.

PS. Puisque la feuille Registre Banque ne sera pas recherchée, supprimer le bouton correspondant.

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
144
Réponses
4
Affichages
170
Réponses
9
Affichages
1 K
Retour