Macro : formule avec un autre classeur
Résolu
cooljuly
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
cooljuly Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
cooljuly Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une macro dans laquelle je cherche à intégrer une formule avec un classeur qui seront dans le même répertoire
mais voilà je n'y arrive pas, j'arrive à faire en sorte d'avoir un pop up qui s'ouvre me demandant le liens mais cela ne fonctionne pas
à noter : le nom du classeur où se trouve les données n'aura pas un nom fixe complet mais il contiendra toujours le mot organigrammes
idéalement il faudrait que ce classeur reste fermé ou alors en lecture seule
lien classeur où le calcul devra apparaître : http://www.cjoint.com/c/FEEpuFiSdqw
lien du classeur où il faut aller chercher les données de calculs : http://www.cjoint.com/c/FEEpvVx3iCw
je pensais commencer mon code comme cela mais je suis perdue
' calcul de la fiche de poste selon les données de la consolidation des organigrammes
Nom_classeur = ActiveWorkbook.Name
NomFichier = "*organigrammes*.xls*"
Repertoire = ThisWorkbook.Path
Chemin = Repertoire & NomFichier
Dim lWorkbook As Workbook
Dim lFound As Boolean
'vérification si fichier ouvert
lFound = False
For Each lWorkbook In Workbooks
If lWorkbook.Name = NomFichier Then
lFound = True
Exit For
End If
Next
If lFound = False Then
If Dir(Chemin) <> "" Then
Workbooks.Open Filename:=Chemin, ReadOnly:=True
End If
End If
merci pour vos lumières et votre aide
J'ai une macro dans laquelle je cherche à intégrer une formule avec un classeur qui seront dans le même répertoire
mais voilà je n'y arrive pas, j'arrive à faire en sorte d'avoir un pop up qui s'ouvre me demandant le liens mais cela ne fonctionne pas
à noter : le nom du classeur où se trouve les données n'aura pas un nom fixe complet mais il contiendra toujours le mot organigrammes
idéalement il faudrait que ce classeur reste fermé ou alors en lecture seule
lien classeur où le calcul devra apparaître : http://www.cjoint.com/c/FEEpuFiSdqw
lien du classeur où il faut aller chercher les données de calculs : http://www.cjoint.com/c/FEEpvVx3iCw
je pensais commencer mon code comme cela mais je suis perdue
' calcul de la fiche de poste selon les données de la consolidation des organigrammes
Nom_classeur = ActiveWorkbook.Name
NomFichier = "*organigrammes*.xls*"
Repertoire = ThisWorkbook.Path
Chemin = Repertoire & NomFichier
Dim lWorkbook As Workbook
Dim lFound As Boolean
'vérification si fichier ouvert
lFound = False
For Each lWorkbook In Workbooks
If lWorkbook.Name = NomFichier Then
lFound = True
Exit For
End If
Next
If lFound = False Then
If Dir(Chemin) <> "" Then
Workbooks.Open Filename:=Chemin, ReadOnly:=True
End If
End If
merci pour vos lumières et votre aide
A voir également:
- Macro : formule avec un autre classeur
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
- Macro word - Guide
2 réponses
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
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
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
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 :
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é :)
=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
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.