Macro : formule avec un autre classeur
Résolu/Fermé
cooljuly
Messages postés
40
Date d'inscription
mercredi 23 mars 2016
Statut
Membre
Dernière intervention
6 septembre 2016
-
30 mai 2016 à 17:25
cooljuly Messages postés 40 Date d'inscription mercredi 23 mars 2016 Statut Membre Dernière intervention 6 septembre 2016 - 1 juin 2016 à 09:35
cooljuly Messages postés 40 Date d'inscription mercredi 23 mars 2016 Statut Membre Dernière intervention 6 septembre 2016 - 1 juin 2016 à 09:35
A voir également:
- Macro : formule avec un autre classeur
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Macro logiciel - Télécharger - Organisation
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
2 réponses
thev
Messages postés
1943
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
14 janvier 2025
697
30 mai 2016 à 23:11
30 mai 2016 à 23:11
Bonjour,
Cela devrait mieux marcher
Cela devrait mieux marcher
Sub ImporterOrganigrammes()
'Déclaration variable chemin et nom en texte
Dim Repertoire As String, Fichierorga As String
'Suppression alertes
Application.DisplayAlerts = False
'Définition contenu variable
Repertoire = ThisWorkbook.Path & "\"
Fichierorga = Dir(Repertoire & "*organigrammes.*")
Fichierorga = "[" & Fichierorga & "]Cumul"
'De la feuille 1 du fichier source
With ficheP
'insertion des formules pour B7 à J26
.Range("B7:J26").FormulaR1C1 = _
"=SUMPRODUCT((" & Fichierorga & "!R2C4:R2C72=R6C)*(" & Fichierorga & "!R3C4:R3C72= RC1)*(OFFSET(" & Fichierorga & "!R3C4,MATCH(R4C2," & Fichierorga & "!R4C3:R400C3, 0),,,69)))"
End With
End Sub
thev
Messages postés
1943
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
14 janvier 2025
697
31 mai 2016 à 18:15
31 mai 2016 à 18:15
J'ai procédé à quelques ajustements
code 1
code 2
ci-joint fichier
https://www.cjoint.com/c/FEFqpKQbvIw
code 1
Private Sub Workbook_Open()
On Error Resume Next
' ouverture cachée du classeur organigrammes
Workbooks.Open Filename:=ThisWorkbook.LinkSources(xlExcelLinks)(1), ReadOnly:=True
If Err.Number = 0 Then ActiveWindow.Visible = False
End Sub
code 2
Sub ImporterOrganigrammes()
'Déclaration variable chemin et nom en texte
Dim Repertoire, Fichierorga As String
Dim classeur_orga As Workbook
'Suppression alertes
Application.DisplayAlerts = False
'Définition contenu variable
Repertoire = ThisWorkbook.Path & "\"
Fichierorga = Dir(Repertoire & "*organigrammes.*")
'Ouverture classeur organigrammes
Workbooks.Open Filename:=Repertoire & Fichierorga, ReadOnly:=True
Set classeur_orga = ActiveWorkbook
ActiveWindow.Visible = False
'De la feuille 1 du fichier source
Fichierorga = "[" & Fichierorga & "]Cumul"
With ficheP
'insertion des formules pour B7 à J26
.Range("B7:J26").FormulaR1C1 = _
"=SUMPRODUCT(('" & Fichierorga & "'!R2C4:R2C72=R6C)*('" & Fichierorga & "'!R3C4:R3C72= RC1)*(OFFSET('" & Fichierorga & "'!R3C4,MATCH(R4C2,'" & Fichierorga & "'!R4C3:R400C3, 0),,,69)))"
End With
ThisWorkbook.Activate
Calculate
'Fermeture classeur organigrammes
classeur_orga.Close
End Sub
ci-joint fichier
https://www.cjoint.com/c/FEFqpKQbvIw
cooljuly
Messages postés
40
Date d'inscription
mercredi 23 mars 2016
Statut
Membre
Dernière intervention
6 septembre 2016
1 juin 2016 à 09:35
1 juin 2016 à 09:35
c'est super. cela fonctionne.
merci beaucoup
merci beaucoup
31 mai 2016 à 10:14
merci pour la réponse et pour l'aide. Je viens de tester et j'ai une erreur 1004 "erreur définie par l'application ou l'objet" au niveau de la formule
Modifié par thev le 31/05/2016 à 14:04
Pour qu'une liaison fonctionne classeur fermé, les formules correspondantes ne doivent pas faire appel à une fonction.
Voir ma proposition ci-dessous après modification de ton code, pour résoudre ce cas.
Une fois la liaison établie, je te conseille donc d'ouvrir systématiquement le classeur "organigrammes" en fenêtre cachée via ce code :
31 mai 2016 à 14:43
je vais corriger ça en essayant de faire une formule via ma feuille de conso d'organigrammes.
en tout cas je te remercie beaucoup car ton m'aide m'a bien éclairé :)
Modifié par cooljuly le 31/05/2016 à 16:16
=SOMMEPROD(('[Consolidation des organigrammes.xlsm]Consolidation'!$AB1:$AB5000=B4)*('[Consolidation des organigrammes.xlsm]Consolidation'!$AE1:$AE5000=B6)*(DECALER('[Consolidation des organigrammes.xlsm]Consolidation'!$AB1:$AB5000;;EQUIV(A7;'[Consolidation des organigrammes.xlsm]Consolidation'!$F$1:$Y$1;0))))
je pars d'un onglet où il n'y a pas de formule cette fois-ci mais je tombe toujours sur le résultat 0
Modifié par thev le 31/05/2016 à 16:45
Si tu n'as pas ces fonctions dans la formule du classeur où le calcul doit apparaitre, le calcul fonctionnera avec le classeur lié fermé. Tu dois alors reporter ces fonctions dans le classeur où tu as tes données.