Aide connection fichier fermé

Bonjour le forum,

J'ai une macro qui pour mettre à jour mon classeur ouvre un autre classeur, je sais qu'il existe le moyen de le faire sans ouvrir le classeur et j'aurai donc besoin de vos connaissances afin de m' aider .

Voici mon code:

Sub Importer()
Dim Wb As Workbook
Dim iRowPL%, iRowRens%, iRowRéc%, iRowS%, iRowBDD%, iRowVSA%, iRowBDD2%, iRowS2%, iRowVSA2%, iRowPL2%, IrowRens2%, IrowRéc2%
Dim Chemin As String

'On test le réseau
If Range("B2").Value = "Groupe 1" Then
Chemin = "C:\Users\benoi\Desktop\Groupe 1\Mon Planning.xlsm"
ElseIf Range("B2").Value = "Groupe 2" Then
Chemin = "C:\Users\benoi\Desktop\Groupe 2\Mon Planning.xlsm"
ElseIf Range("B2").Value = "Groupe 3" Then
Chemin = "C:\Users\benoi\Desktop\Groupe 3\Mon Planning.xlsm"
End If

If Len(Dir(Chemin)) = 0 Then
    'Si pas de réseau
    MsgBox "Causes: " & vbLf & vbLf & "*Problème de réseau " & vbLf & "*Le fichier n'est plus à son emplacement ", vbExclamation, "Mise à jour impossible"
Else

Application.ScreenUpdating = False
Sheets("PlanningOPS").Unprotect

'On test si le classeur est ouvert
For Each Wb In Workbooks

'Si le classeur est ouvert
    If Wb.Name = "Mon Planning.xlsm" Then ' Respectes Minuscules/Majuscules

        With Wb
            iRowPL = .Sheets("Planning").Cells(Rows.Count, 50).End(xlUp).Row
            iRowRens = .Sheets("Renseignement").Cells(Rows.Count, 2).End(xlUp).Row
            iRowRéc = .Sheets("Récap").Cells(Rows.Count, 2).End(xlUp).Row
            iRowS = .Sheets("SAVE").Cells(Rows.Count, 2).End(xlUp).Row
            iRowBDD = .Sheets("BDD").Cells(Rows.Count, 2).End(xlUp).Row
            iRowVSA = .Sheets("VSA").Cells(Rows.Count, 2).End(xlUp).Row
        End With

        With Workbooks("PlanningOPS5.xlsm")
            iRowPL2 = .Sheets("PlanningOPS").Cells(Rows.Count, 50).End(xlUp).Row
            IrowRens2 = .Sheets("RenseignementOPS").Cells(Rows.Count, 2).End(xlUp).Row
            IrowRéc2 = .Sheets("RécapOPS").Cells(Rows.Count, 2).End(xlUp).Row
            iRowS2 = .Sheets("SAVEOPS").Cells(Rows.Count, 2).End(xlUp).Row
            iRowBDD2 = .Sheets("BDDOPS").Cells(Rows.Count, 2).End(xlUp).Row
            iRowVSA2 = .Sheets("VSAOPS").Cells(Rows.Count, 2).End(xlUp).Row

                .Sheets("PlanningOPS").Range("D9:D" & iRowPL2 + 4).EntireRow.Delete
                .Sheets("PlanningOPS").Range("D9:D" & iRowPL).Value = Workbooks("Mon Planning.xlsm").Sheets("Planning").Range("D9:D" & iRowPL).Value
                .Sheets("PlanningOPS").Range("AX9:AX" & iRowPL).Value = Workbooks("Mon Planning.xlsm").Sheets("Planning").Range("AX9:AX" & iRowPL).Value
                .Sheets("PlanningOPS").Range("D9:D" & iRowPL).Borders.Weight = xlThin
                .Sheets("RenseignementOPS").Range("C4:N" & iRowRens - 1).Value = Workbooks("Mon Planning.xlsm").Sheets("Renseignement").Range("B5:M" & iRowRens).Value
                .Sheets("RenseignementOPS").Range("C4:N" & iRowRens - 1).Borders.Weight = xlThin
                .Sheets("RécapOPS").Range("C7:O" & iRowRéc).Value = Workbooks("Mon Planning.xlsm").Sheets("Récap").Range("B7:N" & iRowRéc).Value
                .Sheets("RécapOPS").Range("C7:O" & iRowRéc).Borders.Weight = xlThin
                .Sheets("SAVEOPS").Range("A3:A" & iRowS2).EntireRow.Delete
                .Sheets("SAVEOPS").Range("B2:E2").ClearContents
                .Sheets("SAVEOPS").Range("B2:E" & iRowS).Value = Workbooks("Mon Planning.xlsm").Sheets("SAVE").Range("B2:E" & iRowS).Value
                .Sheets("BDDOPS").Range("A3:A" & iRowBDD2).EntireRow.Delete
                .Sheets("BDDOPS").Range("A2:D2,F2,J2,O2").ClearContents
                .Sheets("BDDOPS").Range("A2:D" & iRowBDD).Value = Workbooks("Mon Planning.xlsm").Sheets("BDD").Range("A2:D" & iRowBDD).Value
                .Sheets("BDDOPS").Range("F2:F" & iRowBDD).Value = Workbooks("Mon Planning.xlsm").Sheets("BDD").Range("F2:F" & iRowBDD).Value
                .Sheets("BDDOPS").Range("J2:J" & iRowBDD).Value = Workbooks("Mon Planning.xlsm").Sheets("BDD").Range("J2:J" & iRowBDD).Value
                .Sheets("BDDOPS").Range("O2:O" & iRowBDD).Value = Workbooks("Mon Planning.xlsm").Sheets("BDD").Range("O2:O" & iRowBDD).Value

                'Formule Planning
                With .Sheets("PlanningOPS")
                    .Range("E8:AW8").AutoFill .Range("E8:AW" & iRowPL)
                    .Range("B8:C8").AutoFill .Range("B8:C" & iRowPL)
                    .Range("A8:A50").Interior.Color = RGB(89, 89, 89)
                    .Range("AX8:AY50").Interior.Color = RGB(89, 89, 89)
                End With

                'Formule Récap
                With .Sheets("RécapOPS")
                    .Range("D6:O6").AutoFill .Range("D6:O" & iRowRéc)
                End With
        End With

    Exit For
    End If
Next Wb

'Si le fichier est fermé
    If Wb Is Nothing Then

        Set Wb = Workbooks.Open(Chemin)

        With Wb
            iRowPL = .Sheets("Planning").Cells(Rows.Count, 50).End(xlUp).Row
            iRowRens = .Sheets("Renseignement").Cells(Rows.Count, 2).End(xlUp).Row
            iRowRéc = .Sheets("Récap").Cells(Rows.Count, 2).End(xlUp).Row
            iRowS = .Sheets("SAVE").Cells(Rows.Count, 2).End(xlUp).Row
            iRowBDD = .Sheets("BDD").Cells(Rows.Count, 2).End(xlUp).Row
            iRowVSA = .Sheets("VSA").Cells(Rows.Count, 2).End(xlUp).Row
        End With

        With Workbooks("PlanningOPS5.xlsm")
            iRowPL2 = .Sheets("PlanningOPS").Cells(Rows.Count, 50).End(xlUp).Row
            IrowRens2 = .Sheets("RenseignementOPS").Cells(Rows.Count, 2).End(xlUp).Row
            IrowRéc2 = .Sheets("RécapOPS").Cells(Rows.Count, 2).End(xlUp).Row
            iRowS2 = .Sheets("SAVEOPS").Cells(Rows.Count, 2).End(xlUp).Row
            iRowBDD2 = .Sheets("BDDOPS").Cells(Rows.Count, 2).End(xlUp).Row
            iRowVSA2 = .Sheets("VSAOPS").Cells(Rows.Count, 2).End(xlUp).Row

                .Sheets("PlanningOPS").Range("D9:D" & iRowPL2 + 4).EntireRow.Delete
                .Sheets("PlanningOPS").Range("D9:D" & iRowPL).Value = Workbooks("Mon Planning.xlsm").Sheets("Planning").Range("D9:D" & iRowPL).Value
                .Sheets("PlanningOPS").Range("AX9:AX" & iRowPL).Value = Workbooks("Mon Planning.xlsm").Sheets("Planning").Range("AX9:AX" & iRowPL).Value
                .Sheets("PlanningOPS").Range("D9:D" & iRowPL).Borders.Weight = xlThin
                .Sheets("RenseignementOPS").Range("C4:N" & iRowRens - 1).Value = Workbooks("Mon Planning.xlsm").Sheets("Renseignement").Range("B5:M" & iRowRens).Value
                .Sheets("RenseignementOPS").Range("C4:N" & iRowRens - 1).Borders.Weight = xlThin
                .Sheets("RécapOPS").Range("C7:O" & iRowRéc).Value = Workbooks("Mon Planning.xlsm").Sheets("Récap").Range("B7:N" & iRowRéc).Value
                .Sheets("RécapOPS").Range("C7:O" & iRowRéc).Borders.Weight = xlThin
                .Sheets("SAVEOPS").Range("A3:A" & iRowS2).EntireRow.Delete
                .Sheets("SAVEOPS").Range("B2:E2").ClearContents
                .Sheets("SAVEOPS").Range("B2:E" & iRowS).Value = Workbooks("Mon Planning.xlsm").Sheets("SAVE").Range("B2:E" & iRowS).Value
                .Sheets("BDDOPS").Range("A3:A" & iRowBDD2).EntireRow.Delete
                .Sheets("BDDOPS").Range("A2:D2,F2,J2,O2").ClearContents
                .Sheets("BDDOPS").Range("A2:D" & iRowBDD).Value = Workbooks("Mon Planning.xlsm").Sheets("BDD").Range("A2:D" & iRowBDD).Value
                .Sheets("BDDOPS").Range("F2:F" & iRowBDD).Value = Workbooks("Mon Planning.xlsm").Sheets("BDD").Range("F2:F" & iRowBDD).Value
                .Sheets("BDDOPS").Range("J2:J" & iRowBDD).Value = Workbooks("Mon Planning.xlsm").Sheets("BDD").Range("J2:J" & iRowBDD).Value
                .Sheets("BDDOPS").Range("O2:O" & iRowBDD).Value = Workbooks("Mon Planning.xlsm").Sheets("BDD").Range("O2:O" & iRowBDD).Value

                'Formule Planning
                With .Sheets("PlanningOPS")
                    .Range("E8:AW8").AutoFill .Range("E8:AW" & iRowPL)
                    .Range("B8:C8").AutoFill .Range("B8:C" & iRowPL)
                    .Range("A8:A50").Interior.Color = RGB(89, 89, 89)
                    .Range("AX8:AY50").Interior.Color = RGB(89, 89, 89)
                End With

                'Formule Récap
                With .Sheets("RécapOPS")
                    .Range("D6:O6").AutoFill .Range("D6:O" & iRowRéc)
                End With
        End With

        Wb.Close False

    End If

Call Totaux
Call CouleurTotaux

Sheets("PlanningOPS").Protect
Application.ScreenUpdating = True
MsgBox "Mises à jour effectuées"
End If
End Sub

Bonjour

Si tu ne joins pas ton fichier à mettre à jour et ton fichier source, on ne peut faire aucun test.

Alors....

Bye !

Bonjour,

je sais qu'il existe le moyen de le faire sans ouvrir le classeur

Si tu sais... !

Je vais te dire : si j'ai à mettre à jour des données en utilisant un autre classeur, je l'ouvre, je mets à jour, je referme ! parce que c'est le moyen le plus simple d'opérer...

Cordialement.

Bonjour gmb, bonjour MFerrand,

gmb a écrit :

Si tu ne joins pas ton fichier à mettre à jour et ton fichier source, on ne peut faire aucun test.

Mon fichier contient des données personnelles et faire une version sans serait trop long.

MFerrand a écrit :

Je vais te dire : si j'ai à mettre à jour des données en utilisant un autre classeur, je l'ouvre, je mets à jour, je referme ! parce que c'est le moyen le plus simple d'opérer...

C'est ce que j'ai fais mais sur une des mises à jour je dois ouvrir 3 classeurs. Je voulais donc voir si c'était plus simple de le faire sans les ouvrir. Mais si tu me dis que c'est mieux comme ça je te crois.

Bonjour MFERRAND

Benoist28200 a écrit :

Mon fichier contient des données personnelles et faire une version sans serait trop long.

Alors, je ne vais pas perdre mon temps à essayer de voir ce que fais ta macro.

Il te faudra appliquer l'efficace méthode de MFERRAND.

Bye !

gmb a écrit :

Alors, je ne vais pas perdre mon temps à essayer de voir ce que fais ta macro.

Je suis désolé de t'avoir fais perdre ton temps, bonne continuation.

hello world !

facile !

tu as un classeur FOS (Fichier d'Origine en Saisie) et un fichier FEX (Fichier d'Exploitation qui doit lire FOS.

dans FEX, crée un onglet MIR

en A1 de MIR, tu tapes =

puis tu vas dans FOS, et tu cliques dans A1

dans FEX onglet MIR tu obtiens un lien tout simple vers FOS

étend cette mini formule vers la droite et vers la gauche

l'onglet MIR est devenu le MIRoir de FOS. Il est en permanence à jour même si FOS est fermé

Re jmd !

Je te suis à la trace ! Mais là je ne partage pas ! J'ai une allergie extrêmement profonde à la création de liaisons entre classeurs...

Je n'empêche personne d'essayer, il y en a qui s'en accomodent...

Il y avait bien des macros Excel 4 pouvant opérer sans ouvrir le classeur (mais je ne dispose pas d'une doc. suffisante sur le sujet...)

Je privilégie toujours VBA pour éviter de créer des liaisons, un seul classeur pour piloter l'ensemble et pouvant en gérer une multitude...

salut MFerrand

pourquoi une allergie extrêmement profonde à la création de liaisons entre classeurs ?

les liaisons MIR c'est ultra simple, modifiable par un enfant de 10 ans, et ultra fiable.

ça résiste aux mauvais traitements : changement de Windows, sur MAc, sur OOO...

aucune compétence particulière n'est requise, ni en informatique, ni en Excel ni en VBA. 3 clics et ça fonctionne.

inconvénient : le responsable informatique perd son job

De nombreux demandeurs mettent sur le forum des fichiers avec liaisons... On constate tout de suite qu'à chaque manip. Excel hurle qu'il ne peut mettre à jour...

Si ce n'est pas irritant ! Que te faut-il ?

re à toi

ben... que dire s'ils mettent sur le forum des fichiers avec une macro qui tente de lire un second fichier non joint

c'est pareil

rétablir une liaison prends au pire quelques secondes, même si le fichier a changé de place. Et c'est à la portée de n'importe qui, sans aucune formation.

par contre s'il y a une macro...

Bonjour jmd, bonjour MFerrand,

Y a t'il moyen de récupérer le numéro de la derniere ligne d'une feuille d'un classeur fermé sans l'ouvrir?

re

oui,

joins ton classeur qui sera fermé

Re,

Voici mon classeur fermé:

5planning.xlsm (9.96 Ko)
Rechercher des sujets similaires à "aide connection fichier ferme"