Votre question

Création d'une macro qui range des lignes d'un fichier dans un autre

Tags :
  • Creation
  • Programmation
Dernière réponse : dans Programmation
1 Février 2017 14:57:20

Bonjour, je vous explique tout de A à Z

Dans le répertoire Ordinateur > RACINEENT (M:)  > D des F > Finances > Fichiers > Compta Creds > Compta > 2-Dossiers Creds

se trouvent de nombreux dossiers avec le nom d'entreprise en nom de dossier

Quand on clique sur un dossier, l'arborescence telle qu'elle s'affiche

0-Compta
1-Fiche
2- ...
3- ...

etc

Seul Compta m'interesse
Et quand on clique sur Compta, un fichier excel apparait, c'est de celui ci que je veux extraire les données (je parle au singulier mais c'est valable pour tous les dossiers)
Son nom est constitué comme suit : "*Nom de l'entreprise* - Suivi"

Sur ce fichier se situent deux onglets, PRET, et COM

Seul l'onglet COM m'interesse

J'aimerais que en colonne A, à partir de la ligne où est écrit "Suivi des coms", la macro enregistre toutes les données en dessous de la ligne, de la colonne A à J dans un autre fichier "Fichier récapitulatif des coms" à partir de la ligne 2 de la colonne B à K avec en colonne A le nom de l'entreprise (récupéré à partir du nom de dossier ? du nom du fichier ?)

Voilà

J'ai absolument aucune idée de comment m'y prendre
Et j'aimerais lancer la macro depuis le "Fichier récapitulatif des coms"
Problème, je suis très mauvais, et je souhaiterais de l'aide

Merci
Je suis un peu pressé
Je vais essayer de poster un algorithme en Français brut pour faire comprendre ce que je veux

Autres pages sur : creation macro range lignes fichier

a b L Programmation
1 Février 2017 16:26:20

Salut, un peu pressé ça va être difficile (tu sais pour avoir déjà travailler ici que je ne ferai pas tout le boulot à ta place)
Dans le dossier 0-Compta il n'y a qu'un fichier excel ?
m
0
l
2 Février 2017 08:10:00

Salut

Oui pas de soucis

Oui il y a un seul fichier, c'est un excel, un autre sous dossier nommés "Justificatifs" mais on doit pas fouiller dedans

Donc l'algorithme en Français brut :

Aller dans Ordinateur > RACINEENT (M : ) > D des F > Finances > Fichiers > Compta Creds > Compta > 2-Dossiers Creds

Tant qu'il existe un dossier qui ne commence pas par un chiffre (oui il y a 4 dossiers qui commencent par 0 - xxx ; 1 - xxx , etc)
aller dedans, puis dans comptabilité et ouvrir le Excel
Ouvrir l'onglet COM
Mettre le curseur sur la colonne A,
Descendre les lignes une par une
Si à un moment il est écrit "Suivi des coms" alors
Copier toutes les lignes en dessous de la colonne A à J
Les coller sur fichier récapitulatif des coms en dessous de la derniere ligne écrite de la colonne B à K
En colonne A pour les lignes en question, écrire le nom de l'entreprise (qui se situe dans le nom de dossier ou premier mot du nom du fichier)

Voilà
m
0
l
Contenus similaires
a b L Programmation
2 Février 2017 08:26:37

Ok la procédure est assez clair.
On va commencer par scanner tous les dossiers pour trouver tes entreprise:
  1. sub test()
  2. Dim Folderlist() As String
  3. Dim Listsize As Integer
  4. Set FSO = CreateObject("scripting.filesystemobject")
  5. Listsize = 0
  6. Filepath = "c:\test\" 'pour toi: > RACINEENT (M : ) > D des F > Finances > Fichiers > Compta Creds > Compta > 2-Dossiers Creds
  7. Foldername = Dir(Filepath, vbDirectory)
  8. While Foldername <> ""
  9. FoldernameFirstChar = Left(Foldername, 1)
  10. If FSO.FolderExists(Filepath & Foldername & "\") _
  11. And (FoldernameFirstChar <> ".") And Not IsNumeric(FoldernameFirstChar) Then
  12. ReDim Preserve Folderlist(Listsize)
  13. Folderlist(Listsize) = Foldername
  14. Listsize = Listsize + 1
  15. End If
  16. Foldername = Dir
  17. Wend
  18. For i = LBound(Folderlist) To UBound(Folderlist)
  19. MsgBox Folderlist(i)
  20. Next
  21. End Sub

Essaye d'adapter ça à tes besoins (et de comprendre ce qui est fait ...)
m
0
l
2 Février 2017 09:06:19

Ouais merci beaucoup, là je l'ai lu j'ai pas tout compris mais avec les isnumeric et tout j'arrive à savoir où on va
Je le lis, je le comprends et je dis ce que j'en pense
m
0
l
a b L Programmation
2 Février 2017 09:07:39

hum ... C'est quand même très compliqué ce que je t'ai proposé là,
On va faire plus simple:

  1. Sub searchfolders()
  2. Dim FileSystem As Object
  3. Dim SubFolder
  4.  
  5. Set FileSystem = CreateObject("Scripting.FileSystemObject")
  6.  
  7. For Each SubFolder In FileSystem.GetFolder("c:\test\").SubFolders
  8. If SubFolder.Name Like "[!0-9]*" Then
  9. MsgBox SubFolder.Name
  10. End If
  11. Next
  12.  
  13. End Sub
m
0
l
2 Février 2017 15:11:05

Ok, et à la place de test je mets mon répertoire ?

> RACINEENT (M : ) > D des F > Finances > Fichiers > Compta Creds > Compta > 2-Dossiers Creds
m
0
l
a b L Programmation
2 Février 2017 15:21:55

C'est bien ça (mais sous une forme plus informatique ...
  1. M:\D des F\Finances\Fichiers\Compta Creds\Compta\2-Dossiers Creds\
m
0
l
2 Février 2017 16:51:52

Et en fait que fais la macro ? Parce que je vois les 0-9 et tout mais concrètement sur quoi agit-t-elle ?

Je la mets sur le fichier Récapitulatif des commissions, et elle renvoie tout les noms d'entreprises ?
m
0
l
a b L Programmation
2 Février 2017 17:34:12

C'est bien ça ;) 
m
0
l
a b L Programmation
3 Février 2017 09:02:49

Je te donne la suite, qui devrait trouver tous les fichiers excel dans les répertoire entreprise (une nouvelle fois je te laisse remplacer c:\test ...):

  1. Sub searchfolders()
  2. Dim FileSystem As Object
  3. Dim SubFolder As Object
  4. Dim aFile As Object
  5.  
  6. Set FileSystem = CreateObject("Scripting.FileSystemObject")
  7.  
  8. For Each SubFolder In FileSystem.GetFolder("c:\test\").SubFolders
  9. If SubFolder.Name Like "[!0-9]*" Then
  10. For Each aFile In FileSystem.GetFolder(SubFolder.Path & "\0-compta\").Files
  11. If aFile.Name Like "*.xls*" Then
  12. MsgBox aFile.Path
  13. End If
  14. Next
  15. End If
  16. Next
  17.  
  18. End Sub


Dis moi si ça marche, et si oui, essaye de créer un fonction qui ouvre un fichier xls à partir de son nom et ensuite cherche "Suivi des coms" dans l'onglet com dudit fichier.
A la fin on liera les deux fonctions. La technique des petits pas ...
m
0
l
3 Février 2017 10:58:24

Rebonjour

J'ai un soucis au niveau de cette ligne, il signale une erreur de syntaxe

For Each SubFolder In FileSystem.GetFolder(C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER).SubFolders

Il me semble que les deux points le dérangent après le C

Et oui, pour essayer j'ai préféré faire un test sur un dossier du bureau
m
0
l
a b L Programmation
3 Février 2017 10:59:39

manque les ""
For Each SubFolder In FileSystem.GetFolder("C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER").SubFolders

N.B. ici on fait que lire, pas de risque pour tes dossiers, mais t'a raison mieux vaut être prudent avec les macros :) 
m
0
l
3 Février 2017 11:02:43

Ok ca fonctionne en tant que syntaxe mais quand je lance la macro, il me renvoie chemin d'accès introuvable alors que j'ai recopié l'arborescence jusqu'à DOSSIER

Si je vais plus loin, je devrai en plus rajouter le nom du dossier de l'entreprise après un \ et je doute que ca ne marche :/ 
m
0
l
3 Février 2017 11:03:52

C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER\ALARME SECURITE TOULOUSE par exemple
m
0
l
a b L Programmation
3 Février 2017 11:04:28

t'a des sous dossiers dans DOSSIER ?
m
0
l
3 Février 2017 11:06:34

Oui, Par exemple ALARME SECURITE TOULOUSE
Après il y a l'organisation

0- Compta
1- ...
2- ...

ETC mais seul 0- Compta m'interesse, du moins le excel qui s'y trouve et l'onglet COM de ce excel
m
0
l
a b L Programmation
3 Février 2017 11:06:36

Ton problème est certainement ici:
For Each aFile In FileSystem.GetFolder(SubFolder.Path & "\0-compta\").Files

J'ai déjà inclu le sous dossier "0-compta" de ton arborescence, si tu ne l'a pas dans ton test, ça va merder ...

edit: Manque peut-être un espace, vérifie que j'ai écris juste ...
m
0
l
3 Février 2017 11:10:02

Ca fonctionne on ne peut plus excellement, il me renvoie dans un msgbox tous les trucs c'est ok pour ça
m
0
l
3 Février 2017 11:10:56

Il manquait l'espace après le -
m
0
l
a b L Programmation
3 Février 2017 11:18:19

Ok maintenant on a tous les fichiers sources, On va donc faire une fonction qui copie depuis un fichier les données dont tu as besoin, puis on remplacera le msgbox par cette nouvelle fonction.
Je te laisse commencer à pondre qqch selon ce que j'ai dit là:
Ton professeur a dit :

essaye de créer un fonction qui ouvre un fichier xls à partir de son nom et ensuite cherche "Suivi des coms" dans l'onglet com dudit fichier.

m
0
l
3 Février 2017 11:27:23

Ouvrir le fichier .xls dans 0- Compta
Si il y a un onglet com
   Aller dans l'onglet COM
   i=ligne 0 colonne A(i=curseur)
      Tant qu'on ne croise "Suivi administratif" sur la colonne A
       i=i+1
       Si cellule = Suivi administratif, alors
          copier toutes les lignes où des caractère ont été écrits de la colonne A à J
       Sinon
          Passer au fichier suivant
       Fin du si
   Fin du "tant que"
Sinon
   Passer au fichier suivant
Fin du si

Voilà en Français brut l'algorithme
m
0
l
a b L Programmation
3 Février 2017 11:39:50

C'est pas exactement mon idée ici;

toi tu cherches à traiter tous les fichiers d'un coup, moi je préconise de faire une fonction qui n'en traitera qu'un, mais que l'on appelera pour chaque fichier:

  1. Ouvrir le fichier .xls
  2. Si il y a un onglet com
  3. Aller dans l'onglet COM
  4. Chercher la dernière ligne utiliser dans la colonne A
  5. i=ligne 0 colonne A(i=curseur)
  6. Depuis ligne 0 jusqu'à dernière ligne utilisée de la colonne A faire:
  7. Si cellule = Suivi administratif, alors
  8. copier toutes les lignes où des caractère ont été écrits de la colonne A à J
  9. fin de si
  10. fin de boucle
  11. Fermer le fichier .xls

Qu'en penses-tu ?
Te sens tu capable de pondre un début de quelque chose ?
m
0
l
3 Février 2017 11:52:54

Alors là franchement pondre ça en VBA ...

A part Dim i as Long et Set OngletCom = ThisWorkbook.Sheets("COM") je sais pas trop ce que je peux faire ^^ je maitrise même pas beaucoup le Cells etc
m
0
l
3 Février 2017 11:55:47

Et je précise qu'il faut tout copier de A à J EN DESSOUS de Suivi administratif*

Au dessus il ne le faut pas ça n'a aucune importance ^^
m
0
l
a b L Programmation
3 Février 2017 13:17:30

Il y a forcément un onglet COM ?
m
0
l
a b L Programmation
3 Février 2017 13:53:10

Essaie cette fonction:
  1. Sub ChercheetCopie()
  2.  
  3. Dim nomfichier As String
  4. Dim srcWb As Workbook
  5. Dim sheetCom As Worksheet
  6. Dim cel As Range
  7. Dim Target As Range
  8. Dim Lastcell As Range
  9.  
  10. nomfichier = "c:\test\test.xlsm" ' à remplacer par le chemin complet d'un de tes fichiers
  11.  
  12. Set Target = ThisWorkbook.Sheets(1).Cells(Rows.Count, "B").End(xlUp).Offset(1, 0)
  13. Set srcWb = Workbooks.Open(nomfichier)
  14. Set sheetCom = srcWb.Sheets("COM")
  15. With sheetCom
  16. Set Lastcell = .Cells(Rows.Count, 1).End(xlUp)
  17. For Each cel In .Range(.Range("A1"), Lastcell).Cells
  18. If cel.Value = "mavaleur" Then ' à remplacer par ce que tu veux chercher
  19. .Range(cel.Offset(1, 0), .Cells(Lastcell.Row, "J")).Copy Target
  20. Exit For
  21. End If
  22. Next
  23. End With
  24. srcWb.Close
  25. End Sub
m
0
l
3 Février 2017 14:21:44

Non justement il n'y a pas forcément un onglet COM

Et s'il y est pas je veux passer à autre fichier parce que l'architecture de la feuille est différente et les données y sont différentes de celles que je cherche à copier (elle ne m'intéressent pas)
m
0
l
3 Février 2017 14:27:41

Et cette macro je la mets dans module ou aussi dans feuille 1 à la suite ?

Parce que je l'ai mise en feuille 1 à la suite et quand je l'exécute j'ai 400 en message d'erreur
m
0
l
a b L Programmation
3 Février 2017 14:43:03

Post ici ce que tu as mis exactement (pas besoin de la mettre en module)
La feuille sur laquelle tu test à bien un onglet COM ?
m
0
l
3 Février 2017 14:53:41

  1. Sub searchfolders()
  2.  
  3. Dim FileSystem As Object
  4.  
  5. Dim SubFolder As Object
  6.  
  7. Dim aFile As Object
  8.  
  9.  
  10.  
  11. Set FileSystem = CreateObject("Scripting.FileSystemObject")
  12.  
  13.  
  14.  
  15. For Each SubFolder In FileSystem.GetFolder("C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER").SubFolders
  16.  
  17. If SubFolder.Name Like "[!0-9]*" Then
  18.  
  19. For Each aFile In FileSystem.GetFolder(SubFolder.Path & "\0- Comptabilité\").Files
  20.  
  21. If aFile.Name Like "*.xls*" Then
  22.  
  23. MsgBox aFile.Path
  24.  
  25. End If
  26.  
  27. Next
  28.  
  29. End If
  30.  
  31. Next
  32.  
  33.  
  34.  
  35. End Sub
  36.  
  37. Sub ChercheetCopie()
  38.  
  39.  
  40.  
  41. Dim nomfichier As String
  42.  
  43. Dim srcWb As Workbook
  44.  
  45. Dim sheetCom As Worksheet
  46.  
  47. Dim cel As Range
  48.  
  49. Dim Target As Range
  50.  
  51. Dim Lastcell As Range
  52.  
  53.  
  54.  
  55. nomfichier = "C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER" ' à remplacer par le chemin complet d'un de tes fichiers
  56.  
  57.  
  58.  
  59. Set Target = ThisWorkbook.Sheets(1).Cells(Rows.Count, "B").End(xlUp).Offset(1, 0)
  60.  
  61. Set srcWb = Workbooks.Open(nomfichier)
  62.  
  63. Set sheetCom = srcWb.Sheets("COM")
  64.  
  65. With sheetCom
  66.  
  67. Set Lastcell = .Cells(Rows.Count, 1).End(xlUp)
  68.  
  69. For Each cel In .Range(.Range("A1"), Lastcell).Cells
  70.  
  71. If cel.Value = "Suivi administratif des commissions" Then ' à remplacer par ce que tu veux chercher
  72.  
  73. .Range(cel.Offset(1, 0), .Cells(Lastcell.Row, "J")).Copy Target
  74.  
  75. Exit For
  76.  
  77. End If
  78.  
  79. Next
  80.  
  81. End With
  82.  
  83. srcWb.Close
  84.  
  85. End Sub

Et j'ai mis tout ça sur feuille 1
m
0
l
a b L Programmation
3 Février 2017 14:59:54

Cette ligne cherche à ouvrir un fichier excel !
Citation :

Set srcWb = Workbooks.Open(nomfichier)

Il faut donc mettre un fichier excel dans nomfichier !

Retest et dis moi si ça marche.
Ensuite je te mets une solution pour tester si Sheets("COM") existe
m
0
l
3 Février 2017 15:10:18

Mais du coup il faudra le faire fichier par fichier ?
m
0
l
3 Février 2017 15:13:37

Set srcWb = Workbooks.Open(ALARME SECURITE TOULOUSE - Suivi administratif de entreprise et com.xslx)

Là il me surligne administratif et signale une erreur de syntaxe
m
0
l
a b L Programmation
3 Février 2017 15:21:48

Comme d'hab entre guillemet ... ""

Set srcWb = Workbooks.Open("ALARME SECURITE TOULOUSE - Suivi administratif de entreprise et com.xslx")

Et je le répète le but de cette fonction est de s'occuper d'un seul classeur à la fois. Mais on l'appelera plein de fois, une fois par classeur dont on veut copier les données en fait ...

(N.B. pour la suite il aurait été préférable de garder la variable nomfichier)
m
0
l
3 Février 2017 15:34:31

  1. Sub searchfolders()
  2.  
  3. Dim FileSystem As Object
  4.  
  5. Dim SubFolder As Object
  6.  
  7. Dim aFile As Object
  8.  
  9.  
  10.  
  11. Set FileSystem = CreateObject("Scripting.FileSystemObject")
  12.  
  13.  
  14.  
  15. For Each SubFolder In FileSystem.GetFolder("C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER").SubFolders
  16.  
  17. If SubFolder.Name Like "[!0-9]*" Then
  18.  
  19. For Each aFile In FileSystem.GetFolder(SubFolder.Path & "\0- Comptabilité\").Files
  20.  
  21. If aFile.Name Like "*.xls*" Then
  22.  
  23. MsgBox aFile.Path
  24.  
  25. End If
  26.  
  27. Next
  28.  
  29. End If
  30.  
  31. Next
  32.  
  33.  
  34.  
  35. End Sub
  36.  
  37. Sub ChercheetCopie()
  38.  
  39.  
  40.  
  41. Dim nomfichier As String
  42.  
  43. Dim srcWb As Workbook
  44.  
  45. Dim sheetCom As Worksheet
  46.  
  47. Dim cel As Range
  48.  
  49. Dim Target As Range
  50.  
  51. Dim Lastcell As Range
  52.  
  53.  
  54.  
  55. nomfichier = "C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER" ' à remplacer par le chemin complet d'un de tes fichiers
  56.  
  57.  
  58.  
  59. Set Target = ThisWorkbook.Sheets(1).Cells(Rows.Count, "B").End(xlUp).Offset(1, 0)
  60.  
  61. Set srcWb = Workbooks.Open("ALARME SECURITE TOULOUSE - Suivi administratif de entreprise et des com.xlsx")
  62.  
  63. Set sheetCom = srcWb.Sheets("COM")
  64.  
  65. With sheetCom
  66.  
  67. Set Lastcell = .Cells(Rows.Count, 1).End(xlUp)
  68.  
  69. For Each cel In .Range(.Range("A1"), Lastcell).Cells
  70.  
  71. If cel.Value = "Suivi administratif des commissions" Then ' à remplacer par ce que tu veux chercher
  72.  
  73. .Range(cel.Offset(1, 0), .Cells(Lastcell.Row, "J")).Copy Target
  74.  
  75. Exit For
  76.  
  77. End If
  78.  
  79. Next
  80.  
  81. End With
  82.  
  83. srcWb.Close
  84.  
  85. End Sub


Ca renvoie toujours l'erreur 400
m
0
l
3 Février 2017 15:35:38

J'ai même essayé

nomfichier = "C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER\ALARME SECURITE TOULOUSE\0- Comptabilité" ' à remplacer par le chemin complet d'un de tes fichiers

Et ça ne fonctionne pas également
m
0
l
a b L Programmation
3 Février 2017 15:58:48

  1. Sub searchfolders()
  2.  
  3. Dim FileSystem As Object
  4.  
  5. Dim SubFolder As Object
  6.  
  7. Dim aFile As Object
  8.  
  9.  
  10.  
  11. Set FileSystem = CreateObject("Scripting.FileSystemObject")
  12.  
  13.  
  14.  
  15. For Each SubFolder In FileSystem.GetFolder("C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER").SubFolders
  16.  
  17. If SubFolder.Name Like "[!0-9]*" Then
  18.  
  19. For Each aFile In FileSystem.GetFolder(SubFolder.Path & "\0- Comptabilité\").Files
  20.  
  21. If aFile.Name Like "*.xls*" Then
  22.  
  23. MsgBox aFile.Path
  24.  
  25. End If
  26.  
  27. Next
  28.  
  29. End If
  30.  
  31. Next
  32.  
  33.  
  34.  
  35. End Sub
  36.  
  37. Sub ChercheetCopie()
  38.  
  39.  
  40.  
  41. Dim nomfichier As String
  42.  
  43. Dim srcWb As Workbook
  44.  
  45. Dim sheetCom As Worksheet
  46.  
  47. Dim cel As Range
  48.  
  49. Dim Target As Range
  50.  
  51. Dim Lastcell As Range
  52.  
  53.  
  54.  
  55. nomfichier = "C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER\ALARME SECURITE TOULOUSE - Suivi administratif de entreprise et des com.xlsx" ' à remplacer par le chemin complet d'un de tes fichiers
  56.  
  57.  
  58.  
  59. Set Target = ThisWorkbook.Sheets(1).Cells(Rows.Count, "B").End(xlUp).Offset(1, 0)
  60.  
  61. Set srcWb = Workbooks.Open(nomfichier)
  62.  
  63. Set sheetCom = srcWb.Sheets("COM")
  64.  
  65. With sheetCom
  66.  
  67. Set Lastcell = .Cells(Rows.Count, 1).End(xlUp)
  68.  
  69. For Each cel In .Range(.Range("A1"), Lastcell).Cells
  70.  
  71. If cel.Value = "Suivi administratif des commissions" Then ' à remplacer par ce que tu veux chercher
  72.  
  73. .Range(cel.Offset(1, 0), .Cells(Lastcell.Row, "J")).Copy Target
  74.  
  75. Exit For
  76.  
  77. End If
  78.  
  79. Next
  80.  
  81. End With
  82.  
  83. srcWb.Close
  84.  
  85. End Sub

devrait beaucoup mieux marcher ...
m
0
l
a b L Programmation
6 Février 2017 13:41:42

T'as pu tester ?
m
0
l
7 Février 2017 07:35:06

Salut, oui j'essaye dsl je n'étais pas présent
J'essaye là
m
0
l
7 Février 2017 07:44:23

J'ai un soucis à ce niveau



nomfichier = "C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER\ALARME SECURITE TOULOUSE - Suivi administratif de entreprise et des com.xlsx" ' à remplacer par le chemin complet d'un de tes fichiers

Moi je n'ai pas cette arborescence là

C'est plutôt

C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER\ALARME SECURITE TOULOUSE\0- Comptabilité

Et après il y a le fichier Excel (avec un autre sous dossier qui ne comporte pas de Excel) de ALARME SECURITE TOULOUSE

Du coup y'a erreur 400 quand je lance la macro
m
0
l
a b L Programmation
7 Février 2017 08:48:02

Bon ben tu mets ton path pour le fichier xls complet dans nomdefichier (y compris le nom du fichier !) et ça devrait marcher ...

m
0
l
7 Février 2017 13:10:24

et donc après 0- Comptabilité je mets le " - " + le nom du fichier xls ?
m
0
l
7 Février 2017 13:10:56

Désolé pour les retards de réponse je suis vraiment pris par le temps je te prie de m'en excuser
m
0
l
a b L Programmation
7 Février 2017 13:29:07

Pas de "-", un path (ou chemin d'accès) c'est "c:\dossier\dossier\dossier\fichier.xxx"
Donc ici ça doit donné
  1. nomfichier = "C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER\ALARME SECURITE TOULOUSE\0- Comptabilité\ALARME SECURITE TOULOUSE - Suivi administratif de entreprise et des com.xlsx"

m
0
l
7 Février 2017 14:56:42

Oui mais ça je comprends pas tu dis pas de "-" mais dans l'exemple après tu en mets, donc je mets le nom du fichier après \ ou après - ?
m
0
l
a b L Programmation
7 Février 2017 15:09:48

Si dans le nom de fichier il y a un "-" alors il faut le mettre, mais ce n'est pas un caractère système.
Donne moi exactement le nom du fichier, et le nom complet de tout les sous dossiers dans lequel il se trouve.
m
0
l
8 Février 2017 16:36:54

Re
C'est ça le chemin

C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER\ALARME SECURITE TOULOUSE\0- Comptabilité et après y'a le excel, et un sous dossier ("Justificatifs") (où il n'y pas de excel)

Le excel s'appelle "ALARMES SECURITE TOULOUSE - Suivi ..."
m
0
l
8 Février 2017 16:40:33

C'est bon ça fonctionne mais il met des "REF" parce que dans le fichier original dans les cellules il y a des formules "=" donc en fait ça copie pas en valeur :/ 
m
0
l
a b L Programmation
8 Février 2017 16:41:10

Ok, donc avec le path
  1. '...
  2. nomfichier = "C:\Users\Galopin\Desktop\TEST pour macro\DOSSIER\ALARME SECURITE TOULOUSE\0- Comptabilité\ALARME SECURITE TOULOUSE - Suivi administratif de entreprise et des com.xlsx"
  3.  
  4. Set Target = ThisWorkbook.Sheets(1).Cells(Rows.Count, "B").End(xlUp).Offset(1, 0)
  5.  
  6. Set srcWb = Workbooks.Open(nomfichier)
  7. '...

ça devrait marcher (sous réserve de faute de frappe)...
m
0
l
      • 1 / 2
      • 2
      • Dernier