Liens vba entre deux fichiers qui ne fonctionnent pa

[Résolu/Fermé]
Signaler
Messages postés
327
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
18 janvier 2021
-
Messages postés
327
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
18 janvier 2021
-
bonjour,

j'ai deux fichiers,
l'un qui doit aller sur OneDrive (donc aucune macro possible), où un technicien pourra remplir un onglet pour chaque vente.

Puis un deuxieme fichier (sur le bureau du PC par exemple) pour le comptable, qui récupére automatiquement les données des onglets du 1er fichier (le code ne marche plus) puis au bout de la ligne en cliquant sur par exemple N11 ou N18 le code doit permettre d'aller masquer sur le premier fichier l'onglet correspondant. (histoire de simplifié les choses pour le technicien, ainsi il ne restera que des onglets à remplir une fois que le comptable a double cliqué sur les N11 et 118.

Bref... je n'y comprends pas grand chose en VBA, et j'essaye de comprendre mais là je suis perdue ...
merci de votre aide

https://www.cjoint.com/c/HKdlh4far2l
https://www.cjoint.com/c/HKdliVTHCRl

Attention cjoint modifie les noms des fichiers : voici les noms originaux : "Formulaires G.xls" et "tab synthese G.xlsm"

bonne journée :)
stephanie

1 réponse

Messages postés
1119
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
3 octobre 2021
252
Bonjour,

Regarde déjà et corrige dans la macro cette ligne
Set dest = Workbooks.Open(Filename:="C:\Users\Moi\OneDrive\Documents\Fomrmulaires G.xlsx")  'a adapter le chemin et le nom du classeur de destination

Fomrmulaires au lieu de Formulaires
et xlsx au lieu de xlsm
Messages postés
327
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
18 janvier 2021
5
merci M-12 oui pour "formulaires" j'ai modifié, mais pourquoi mettre xlsm puisque le fichier est bien en xlsx ? j'ai quand meme fait mais ca ne marche pas quand meme ... ;(
(il n'y a que tab synthese qui est en xlsm)
Messages postés
1119
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
3 octobre 2021
252
Re,

Vérifie bien ton chemin où se trouve ton classeur et remplace par ceci

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Dim dest As Workbook
  On Error Resume Next
  Application.DisplayAlerts = False
  If Not Application.Intersect(Target, Range("N:N")) Is Nothing Then
    If Target.Value = "" Then Exit Sub
      Set dest = Workbooks.Open(Filename:="Vérifie ton chemin\Formulaires-G.xlsx")  'a adapter le chemin et le nom du classeur de destination
      dest.Sheets("Action" & Target).Activate
      dest.Sheets("Action" & Target).Unprotect 'déprotège la feuille
      dest.Sheets("Action" & Target).Visible = False
      dest.Sheets("Action" & Target).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True 'protège la feuille
      dest.Close 'ferme le classeur destination
      Application.DisplayAlerts = True
    End If
End Sub
Messages postés
327
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
18 janvier 2021
5
Merci M-12 ca fonctionne :)

Pourras tu me dire ce qu'il faudrait rajouter pour que le fichier s'ouvre tout seul car là ca fonctionne si le fichier destinataire est ouvert sinon, non.

De plus en E11 ("tab synthese G") il y a cette formule, afin de récupérer la cellule D9 du fichier "Formulaires G"
=SIERREUR(INDIRECT("'C:\Users\Moi\OneDrive\Documents\[Formulaires G.xlsx]Action"&LIGNE()-10&"'!$D$9");"").
Cela ne fonctionne pas ... aurais tu une idée ?
Messages postés
1119
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
3 octobre 2021
252
Re,

Dans la macro que j'ai mise, je te place à cet endroit
Set dest = Workbooks.Open(Filename:="Vérifie ton chemin\Formulaires-G.xlsx")

où Vérifie ton chemin doit être ton chemin, soit :

C:\Users\Moi\OneDrive\Documents
mais vérifie quand même si il est correct

Pour ta formule:
=SIERREUR(INDIRECT("'C:\Users\Moi\OneDrive\Documents\[Formulaires G.xlsx]Action"&LIGNE()-10&"'!$D$9");"")


Il me semble qu'il y a un tiret entre Formulaires et G.xlsx
Ensuite avec ta formule tu changeras d'onglet à chaque ligne

Teste comme ceci

=SIERREUR(INDIRECT("'C:\Users\Moi\OneDrive\Documents\[Formulaires-G.xlsx]Action"&$N11&"'!$D$9");"")
Messages postés
327
Date d'inscription
mercredi 31 mars 2010
Statut
Membre
Dernière intervention
18 janvier 2021
5
oui effectivement cjoint, rajoute le "_" dans le nom mais dans les fichiers originaux il n'y ai pas. Je l'ai quand meme tenté mais ca ne marche pas ... L'adresse est la bonne j'ai vérifié... ce qui est bizard, c'est que lorsque je lance le code que tu m'as aidé à faire (en double cliquant sur une ligne de N) j'ai pendant quelques instants la colonne E qui s’alimente toute seule puis dés que je clic sur une autre cellule tout disparait.
bonne journée