Classeur a classeur

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
 

job75

XLDnaute Barbatruc
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+
 

accoman

XLDnaute Junior
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
 

job75

XLDnaute Barbatruc
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:

job75

XLDnaute Barbatruc
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+
 

accoman

XLDnaute Junior
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
 

accoman

XLDnaute Junior
Re : Classeur a classeur

bonjour a tous
je vous join le classeur Compta_2010 afin que vous puissier voir ce qui a ete fait avec Kjin
amicalement
 

Pièces jointes

  • Compta_2010.zip
    43.4 KB · Affichages: 32
  • Compta_2010.zip
    43.4 KB · Affichages: 28
  • Compta_2010.zip
    43.4 KB · Affichages: 28

job75

XLDnaute Barbatruc
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+
 

job75

XLDnaute Barbatruc
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

  • Compta_2010 et Client.zip
    44.9 KB · Affichages: 37

accoman

XLDnaute Junior
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:

job75

XLDnaute Barbatruc
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+
 

Discussions similaires

Réponses
19
Affichages
600

Statistiques des forums

Discussions
312 345
Messages
2 087 450
Membres
103 546
dernier inscrit
mohamed tano