Chemin relatif et changement des noms des fichiers excels

Bonjour tout le monde ,

J'ai un petit problème , j ai deux fichier excel ("ZFA.xls"et "ZFI.xlsm") je veux copier du premier vers le deuxième le programme marche correctement .mais le soucis je sais pas comment faire un chemin relatif

quand j'ai envoyé les deux fichier a un ami ça marche pas chez lui vue que il les a pas mis dans le mm endroit et le deuxième problème si par exemple quand je renomme mon fichier excel ça marche pas aussi s'il vous plais pourrai vous m'aider ???

a faire un chemin relatif et quand je renomme les dossiers ça va marché

merci en avance

Marc,

voici le code:

Sub Mise_à_jour()

Application.ScreenUpdating = False

Dim ZFA As Workbook

Dim PlgFE1 As Range

Dim PlgFE2 As Range

Dim Cel1 As Range

Dim Cel2 As Range

Workbooks.Open Filename:=ThisWorkbook.Path & "\ZFA.xls"

'teste si le classeur est ouvert...

On Error Resume Next

Set ZFA= Workbooks("ZFA.xls")

'...si non, l'ouvre

If Err.Number <> 0 Then Set ZFA = Workbooks.Open(chemin_globale)

'supprime le gestionnaire d'erreur

On Error GoTo 0

With ZFA.Worksheets("Feuil1"):

Set PlgFE1 = .Range(.Cells(3, 2), .Cells(.Rows.Count, 2).End(xlUp)):

End With

With Workbooks("ZFI.xlsm").Worksheets("Documents"):

Set PlgFE2 = .Range(.Cells(4, 4), .Cells(.Rows.Count, 4).End(xlUp)):

End With

For Each Cel1 In PlgFE1 'pour chaque cellule 1 dans fichier ZFA.Worksheets("Feuil1")

For Each Cel2 In PlgFE2 'pour chaque cellule 2 dans fichier ("ZFI.xlsm").Worksheets("Documents")

If Cel1.Value = Cel2.Value Then Cel2.Offset(, 1).Value = Cel1.Offset(, 2).Value

Next Cel2

Next Cel1

ActiveWorkbook.Close

Application.ScreenUpdating = True

End Sub

Bonjour,

Inutile de faire des demandes en doublon :

https://forum.excel-pratique.com/viewtopic.php?f=2&t=133331&p=819065#p819065

https://forum.excel-pratique.com/viewtopic.php?f=2&t=133322&p=819045#p819045

Si votre fichier contenant la macro est dans le même répertoire, vous pouvez utiliser ce genre d'instruction :

NomComplet = ThisWorkbook.Path & "\NomFichierA_Ouvrir.xlsx"

Si le nom du fichier change aussi, à moins de connaitre le nouveau nom à l'avance (renseigné dans le fichier contenant la macro ou règle de nommage prédéfinie), vous ne pourrez pas l'ouvrir de cette manière.

Bonjour Marc, bonjour le forum,

Bon si tu renommes le fichier c'est sûr que ça va pas marcher !... Sinon ton code est bizarrement conçu. Tu ouvres un classeur puis tu testes s'il n'est pas déjà ouvert ?!...

je n'ai pas compris ce code, à quoi correspond la variable chemin_globale ???

If Err.Number <> 0 Then Set ZFA = Workbooks.Open(chemin_globale)

On pourrait arriver à tes fins (même en renommant le fichier) à conditions que les deux fichiers soient les seuls dans un dossier unique (quelqu'il soit) avec le code ci-dessous :

Sub Mise_à_jour2()
Dim C1 As Workbook
Dim O1 As Worksheet
Dim CA As String
Dim F As String
Dim C2 As Workbook
Dim O2 As Worksheet
Dim PlgFE1 As Range
Dim PlgFE2 As Range
Dim Cel1 As Range
Dim Cel2 As Range

Set C1 = ThisWorkbook
Set O1 = C1.Worksheets("Documents")
CA = C1.Path & "\"
F = Dir(CA & "*.xls")
Do While F <> ""
    If Not F = C1.Name Then
        On Error Resume Next
        Set C2 = Workbooks(CA & F)
        If Err.Number <> 0 Then Set C2 = Workbooks.Open(CA & F)
        On Error GoTo 0
        Set O2 = C2.Worksheets("Feuil1"):
        Set PlgFE2 = O2.Range(O2.Cells(3, 2), O2.Cells(Application.Rows.Count, 2).End(xlUp))
        Set PlgFE1 = O1.Range(O1.Cells(4, 4), O1.Cells(Application.Rows.Count, 4).End(xlUp))
        For Each Cel2 In PlgFE2 'pour chaque cellule 1 dans fichier ZFA.Worksheets("Feuil1")
            For Each Cel1 In PlgFE1 'pour chaque cellule 2 dans fichier ("ZFI.xlsm").Worksheets("Documents")
                If Cel2.Value = Cel1.Value Then Cel1.Offset(, 1).Value = Cel2.Offset(, 2).Value
            Next Cel1
        Next Cel2
        C2.Close
    End If
    F = Dir
Loop
Application.ScreenUpdating = True
End Sub

[Édition]

Bonjour Pedro, nos posts se sont croisés...

Salut ThauThème,

enfaîte j ai deux fichier excel je veux copier des élément d'un fichier et les mettre dans l'autre a laide d'une macro du coup je me suis dis il peut pas copier les donner d'un autre son l'ouvrir après quand j ai changé l'emplacement du fichier je l ai pas mis dans le mm dossier la macro ne fonctionne pas et aussi quand j ai renommé l'un des fichier la macro ne fonctionne pas aussi .

mais dans ton code tas pas spécifier le fichier ZFA.xls d'ou il vas copier les valeurs donc je sais pas est ce que il faut lai faire dans le mm dossier ou pas ???

Marc ,

Re,

En fait j'ai deux fichier Excel je veux copier des éléments d'un fichier et les mettre dans l'autre a laide d'une macro. Du coup je me suis dit il ne peut pas copier les données d'un autre sans l'ouvrir. Après quand j ai changé l'emplacement du fichier je l'ai pas mis dans le même dossier, la macro ne fonctionne pas et aussi quand j ai renommé l'un des fichier la macro ne fonctionne pas aussi.

Bon ça j'avais compris...

Mais dans ton code t'as pas spécifié le fichier ZFA.xls d'où il vas copier les valeurs donc je sais pas est-ce qu'il faut les faire dans le même dossier ou pas ???

Comme je t'ai dit dans mon premier post, le code que je te propose ne fonctionne que si les deux fichiers se trouvent dans le même dossier (quelqu'il soit) et uniquement eux. Aucun autre fichier ne doit s'y trouver. De ce fait, le nom du second fichier n'a plus a être spécifié. Il suffit que ce ne soit pas le même nom que le fichier 1. Donc si tu donnes tes fichiers à une autre utilisateur, il suffira qu'ils les mette dans le même dossier (et seulement eux) pour que le code fonctionne. Teste le code de mon premier post dans ces conditions et tu verras que ça fonctionne...

bonjour,

j ai vue ça marche parfaitement mais moi je veux pas les mettre dans un seul dossier si tu peut m'aider ça serai super cool

marc ,

Re,

j ai vu, ça marche parfaitement mais moi je ne veux pas les mettre dans un seul dossier tu comprends. Si tu peux m'aider ça serait cool.

Heu non... Désolé mais une macro qui marche en mettant les fichiers n'importe où et en changeant le nom d'un des deux fichiers je ne sais pas faire...

et si par exemple le fichier "ZFA.xlsx " on change pas de nom et on sait son chemin c est faisable ???

si tu sais faire ça

C'est grave bien aussi genre je met mon fichier ZFI.xlsm ou je veux mais il récupère l'information ?????

Re,

Annonce leboncoin (oops ! J'ai dû me tromper de site...) :

Vend boule de cristal plus vraiment translucide, bon prix...

tu peux me répondre aussi situ connais la réponse merci hhhh

tu peux me répondre aussi situ connais la réponse merci hhhh

Demande pas claire + changeante + pas de détails = réponse inexistante ou inadaptée...

Jai deux fichier excel le premier c est ZFA.xlsx qui est par exemple dans un fichier dans le disque D

je veux copies des élément qui sont dedans et les envoyé vers un autre fichier ZFI.xlsm qui est dans un autre endroit on vas dire le bureau

remarque : le fichier ZFI.xlsm on peut le renommé si on veut

normalement ya pas plus claire que ça

0zfa.xlsx (8.08 Ko)
0zfi.xlsm (19.92 Ko)

Re,

Bien sûr qu'on pourrait te répondre, puis tu vas encore changer les conditions et ça sera sans fin. Sur ce point Pedro et moi t'avons bien cerné...

normalement ya pas plus claire que ça

Et bhé non ! C'est toujours pas clair !... qui est par exemple dans un fichier (il faut comprendre Dossier) dans le disque D . Bravo les détails !...

De plus le code que je t'ai fourni était commenté ligne par ligne... Au lieu de te lamenter, en faisant un minimum d'effort tu devrais résoudre le problème par toi même ou, au pire, nous proposer un code que nous n'aurions qu'à rectifier...

bonjour ,

voila le code ,

je cherche juste a v pouvoire renommé ZFI.xlsm comme je veux son perdre avoir d'érreur dexécution

cordialement

Sub Mise_à_jour()

Application.ScreenUpdating = False

Dim ZFA As Workbook

Dim PlgFE1 As Range

Dim PlgFE2 As Range

Dim Cel1 As Range

Dim Cel2 As Range

Workbooks.Open Filename:=ThisWorkbook.Path & "\ZFA.xls"

With ZFA.Worksheets("Feuil1"):

Set PlgFE1 = .Range(.Cells(3, 2), .Cells(.Rows.Count, 2).End(xlUp)):

End With

With Workbooks("ZFI.xlsm").Worksheets("Documents"):

Set PlgFE2 = .Range(.Cells(4, 4), .Cells(.Rows.Count, 4).End(xlUp)):

End With

For Each Cel1 In PlgFE1 'pour chaque cellule 1 dans fichier ZFA.Worksheets("Feuil1")

For Each Cel2 In PlgFE2 'pour chaque cellule 2 dans fichier ("ZFI.xlsm").Worksheets("Documents")

If Cel1.Value = Cel2.Value Then Cel2.Offset(, 1).Value = Cel1.Offset(, 2).Value

Next Cel2

Next Cel1

ActiveWorkbook.Close

Application.ScreenUpdating = True

End Sub

Rechercher des sujets similaires à "chemin relatif changement noms fichiers excels"