Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA Copie de fichiers sur un réseau

4 réponses
Avatar
Domi
Bonjour à tous,
Dans un classeur Excel, j'ai dans la colonne B, une liste de chemins d'accès
pointant vers divers fichiers (.xls, .doc... etc)
Exemple :
En B2 : \\SRV1\Produits\etat.xls
En B3 : \\SRV2\Dépenses\budget2009.xls
En B4 : \\SRV1\Ventes\janvier.doc
etc....

J'ai en A1 un chemin d'accès de destination
Exemple : \\SRV3\SAVE\

Dans la colonne C, en face de chaque chemin d'accès, je voudrais pouvoir
"cocher" (par la saisie d'une valeur quelconque...) les documents que je
souhaite copier vers le dossier de destination (en A1)
Je souhaiterais faire cela via VBA, quelqu'un aurait-il une solution à me
proposer ?
Merci
Domi

4 réponses

Avatar
MichDenis
Bonjour Domi,

Je n'ai pas saisi le sens de ta question...

Quels sont les critères qui te permettent de choisir les
fichiers que tu veux copiés vers le répertoire en A1 et
dont tu désires indiquer ton intention en colonne C ?



"Domi" a écrit dans le message de groupe de discussion :

Bonjour à tous,
Dans un classeur Excel, j'ai dans la colonne B, une liste de chemins d'accès
pointant vers divers fichiers (.xls, .doc... etc)
Exemple :
En B2 : SRV1Produitsetat.xls
En B3 : SRV2Dépensesbudget2009.xls
En B4 : SRV1Ventesjanvier.doc
etc....

J'ai en A1 un chemin d'accès de destination
Exemple : SRV3SAVE

Dans la colonne C, en face de chaque chemin d'accès, je voudrais pouvoir
"cocher" (par la saisie d'une valeur quelconque...) les documents que je
souhaite copier vers le dossier de destination (en A1)
Je souhaiterais faire cela via VBA, quelqu'un aurait-il une solution à me
proposer ?
Merci
Domi
Avatar
Domi
Bonjour,
Je veux copier uniquement les fichiers (dont la 'adresse figure dans la
colonne B) et dont la colonne C contient une valeur
Si C2 vide, je ne copie pas en A1 le fichier dont l'adresse figure en B2
Si C3 contient une valeur, je copie en A1 le fichier dont l'adresse figure
en B3
Je balaye toute la plage de la colonne B qui contient des adresses
(valeurs), je regarde si la colonne C contient une valeur, pour les lignes
dont c'est le cas je copie tous les fichiers vers l'adresse qui figure en
A1.
Désolé pour mon manque de clarté....
Je m'absente quelques jours, je ne pourrai donc pas repondre a vos
eventuelles aides dans l'immédiat
Merci et à bientôt j'espère.
Domi


"MichDenis" a écrit dans le message de news:
OWpj$
Bonjour Domi,

Je n'ai pas saisi le sens de ta question...

Quels sont les critères qui te permettent de choisir les
fichiers que tu veux copiés vers le répertoire en A1 et
dont tu désires indiquer ton intention en colonne C ?



"Domi" a écrit dans le message de groupe de discussion :

Bonjour à tous,
Dans un classeur Excel, j'ai dans la colonne B, une liste de chemins
d'accès
pointant vers divers fichiers (.xls, .doc... etc)
Exemple :
En B2 : SRV1Produitsetat.xls
En B3 : SRV2Dépensesbudget2009.xls
En B4 : SRV1Ventesjanvier.doc
etc....

J'ai en A1 un chemin d'accès de destination
Exemple : SRV3SAVE

Dans la colonne C, en face de chaque chemin d'accès, je voudrais pouvoir
"cocher" (par la saisie d'une valeur quelconque...) les documents que je
souhaite copier vers le dossier de destination (en A1)
Je souhaiterais faire cela via VBA, quelqu'un aurait-il une solution à me
proposer ?
Merci
Domi



Avatar
MichDenis
Tu copies ce qui suit dans un module standard :
Tu renseignes dans la procédure, le nom de la feuille
où sont les données.

P.S- La procédure ne t'alerte pas si tu copies un nom de fichier
déjà existant dans le répertoire de destination. Elle l'écrase.

'------------------------------------------
Sub test()

Dim Sh As Worksheet
Dim Rg As Range

'à déterminer le nom de la feuille
Set Sh = Worksheets("Feuil1")
With Sh
Set Rg = .Range("B1:B" & .Range("A65536").End(xlUp).Row)
chemin = .Range("A1")
End With
'vérifier que le chemin -répertoire de destination existe.
If Dir(chemin, vbDirectory) <> "" Then
'Pour chacune des cellules dans la colonne B:B
For Each c In Rg
'Si une valeur existe en colonne C
'Vérifier le que fichier existe
If Rg.Offset(, 1) <> 0 Then
If Dir(c.Value) <> "" Then
'Extraire le nom du fichier
Fichier = Split(c.Value, "")(UBound(Split(c.Value, "")))
'copie du fichier
FileCopy c.Value, chemin & Fichier
Else
MsgBox "Incapable de trouver ce ficher : " & c.Value
End If
End If
Next
Else
MsgBox "Ce répertoire n'existe pas : " & chemin
End If
End Sub
'------------------------------------------



"Domi" a écrit dans le message de groupe de discussion :

Bonjour,
Je veux copier uniquement les fichiers (dont la 'adresse figure dans la
colonne B) et dont la colonne C contient une valeur
Si C2 vide, je ne copie pas en A1 le fichier dont l'adresse figure en B2
Si C3 contient une valeur, je copie en A1 le fichier dont l'adresse figure
en B3
Je balaye toute la plage de la colonne B qui contient des adresses
(valeurs), je regarde si la colonne C contient une valeur, pour les lignes
dont c'est le cas je copie tous les fichiers vers l'adresse qui figure en
A1.
Désolé pour mon manque de clarté....
Je m'absente quelques jours, je ne pourrai donc pas repondre a vos
eventuelles aides dans l'immédiat
Merci et à bientôt j'espère.
Domi


"MichDenis" a écrit dans le message de news:
OWpj$
Bonjour Domi,

Je n'ai pas saisi le sens de ta question...

Quels sont les critères qui te permettent de choisir les
fichiers que tu veux copiés vers le répertoire en A1 et
dont tu désires indiquer ton intention en colonne C ?



"Domi" a écrit dans le message de groupe de discussion :

Bonjour à tous,
Dans un classeur Excel, j'ai dans la colonne B, une liste de chemins
d'accès
pointant vers divers fichiers (.xls, .doc... etc)
Exemple :
En B2 : SRV1Produitsetat.xls
En B3 : SRV2Dépensesbudget2009.xls
En B4 : SRV1Ventesjanvier.doc
etc....

J'ai en A1 un chemin d'accès de destination
Exemple : SRV3SAVE

Dans la colonne C, en face de chaque chemin d'accès, je voudrais pouvoir
"cocher" (par la saisie d'une valeur quelconque...) les documents que je
souhaite copier vers le dossier de destination (en A1)
Je souhaiterais faire cela via VBA, quelqu'un aurait-il une solution à me
proposer ?
Merci
Domi



Avatar
MichDenis
Dans la procédure, remplace ceci :
If Rg.Offset(, 1) <> 0 Then

Par
If Rg.Offset(, 1) <> "" Then