Modification d'un fichier via un autre.

Tatie Danielle

XLDnaute Nouveau
Hello ;)

J'ai un problème un peu tordu et je n'ai aucune idée de comment le résoudre, je m'explique en essayant d'être le plus complet possible.:eek:

J'ai 2 répertoires, L'un contenant une floppée de fichiers excels, l'autre 1 seul fichier excel me permettant de lister les fichiers du repertoire contenant tout mes fichiers excels.

Le répertoire contenant les fichiers s'apelle c:\MesFichiers et celui contenant le fichier de listage s'apelle c:\MaListe.

Sur tout mes fichiers du repertoire "MesFichiers" il y à une case à cocher présente en [A1].

Je voudrais que quand cette case est cochée ça me colore le nom du fichier présent dans la liste en rouge par exemple.


Est-ce possible et surtout comment faire ? Merci de votre aide :)
 
Dernière édition:

calouuuu

XLDnaute Nouveau
Re : Modification d'un fichier via un autre.

Bonjour,

Il faut modifier la macro qui fait ta liste des fichiers pour qu'elle ouvre un à un les fichiers du répertoire c:\mes fichiers par
Workbooks.Open Filename:=fic1
où fic1 contient le nom de ton fichier puis controler la cellule [A1] par
if range(a1).value = xxx then ...
et enfin à l'endroit où ta macro enregistre le nom du fichier dans ta liste, modifier les caractéristiques de la police par
activecell.Font.ColorIndex = 3
pour une police rouge par exemple ou
activecell.Interior.ColorIndex = 3
pour colorer l'intérieur de ta cellule en rouge.

Bien sur il faudra faire soit la police en rouge, soit l'intérieur en rouge sinon rouge sur rouge on ne vois rien ;o))

Mais si tu me transmet un ex de ta macro, je peux te modifier tout çà....
 

job75

XLDnaute Barbatruc
Re : Modification d'un fichier via un autre.

Bonjour Tatie Danielle, calouuuu,

Il n'est pas nécessaire d'ouvrir les fichiers.

1) Dans chaque fichier, affecter une cellule liée à la case à cocher, par exemple B1 (de la feuille nommée Feuil1 par exemple).

2) Avec une macro, balayer la plage où se trouvent listés les noms des fichiers. Si la cellule courante est définie par la variable cel, exécuter le code :

Code:
cel.Offset(, 1).FormulaR1C1 = "='C:\MesFichiers\[" & cel & "]Feuil1'!R1C2"

A droite de chaque nom de fichier s'inscrira l'état (VRAI ou FAUX) de la case à cocher.

3) Appliquer une Mise en forme conditionnelle (MFC) aux cellules de la liste. Pour la cellule A2 par exemple, la formule de la MFC sera tout simplement :

=B2

A+
 
Dernière édition:

Tatie Danielle

XLDnaute Nouveau
Re : Modification d'un fichier via un autre.

J'avoue être un peu perdue... :eek:

Je t'envoie donc la partie est sensible de t'interesser.

Code:
Sub ListFilesInFolder(strFolderName As String, bIncludeSubfolders As Boolean)
  'Activer la reference Microsoft Scripting RunTime 
  Static FSO As FileSystemObject
  Dim oSourceFolder As Scripting.Folder
  Dim oSubFolder As Scripting.Folder
  Dim oFile As Scripting.File
  Static wksDest As Worksheet
  Static iRow As Long
  Static bNotFirstTime As Boolean

[A1:A100].ClearContents 

    iRow = 2

  If Not bNotFirstTime Then
    Set wksDest = ActiveSheet
    Set FSO = CreateObject("Scripting.FileSystemObject")

    bNotFirstTime = True
  End If
  Set oSourceFolder = FSO.GetFolder(strFolderName)
  For Each oFile In oSourceFolder.Files
    wksDest.Cells(iRow, 2) = oFile.Name

    iRow = iRow + 1
  Next oFile

Sub Chemin()
    ListFilesInFolder "C:\MesFichiers", True
End Sub

Voilà le code qui m'affiche les différents dossiers :) (j'ai viré 2/3 truc mais le principal y est).
A noter que c'est un code trouvé sur le forum donc peut être pas très optimisé pour ce que je veux faire.

EDIT : Je vais tester ta méthode Job75 ^^
 
Dernière édition:

Tatie Danielle

XLDnaute Nouveau
Re : Modification d'un fichier via un autre.

En tant que neophite en VB j'ai quelque problème avec la phase 2 de ta méthode job75 :(.

A vrai dire je ne sais pas trop comment m'y prendre pour réaliser ce que tu me dit de faire. J'ai fait quelques essais mais ils se sont révélés infructeux (le VRAI/FAUX ne s'affiche à coté de mes fichier dans ma liste).

Si tu pouvais m'aider car là je nage completement.

PS: R1C1 signifie quoi exactement ? Row1Column1 ? Ou ça n'a rien à voir ?

Merci.
 

job75

XLDnaute Barbatruc
Re : Modification d'un fichier via un autre.

Re,

D'abord, pour comprendre ce qui se passe, si un nom de fichier est en A2, exécuter la macro :

Code:
Sub Test()
Set cel = [A2]
cel.Offset(, 1).FormulaR1C1 = "='C:\MesFichiers\[" & cel & "]Feuil1'!R1C2"
End Sub

Ensuite pour balayer la plage des noms de fichiers, utiliser une boucle For Each cel In .... Next, il y a plein d'exemples sur le forum.

A+
 

Tatie Danielle

XLDnaute Nouveau
Re : Modification d'un fichier via un autre.

Alors voilà, j'ai réussi à faire afficher Vrai/faux dans la colonne à côté de tout mes fichiers en fonction de la case cochée et changer la couleur donc tout va bien (merci tu m'as bien aidée :) ).

Par contre dès que je lance la macro j'ai une erreur '1004' 'Erreur définie par l'application ou par l'objet'. Mais la macro fonctionne malgré l'erreur.

Le passage montré en erreur est

Code:
cel.Offset(, 1).FormulaR1C1 = "='C:\MesFichiers\[" & cel & "]Feuil1'!R1C2"


Je vois pas d'ou ça pourrait provenir :confused:.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Modification d'un fichier via un autre.

Re,

Je ne vois pas non plus. Peut-être que la plage balayée avec cel, à un moment, ne correspond pas au nom d'un fichier (cellule vide par exemple) ?

On peut toujours éviter l'affichage des erreurs en mettant (avant la boucle) :

On Error Resume Next

Mais il vaut mieux savoir le pourquoi de l'erreur, c'est instructif :)

A+
 

Tatie Danielle

XLDnaute Nouveau
Re : Modification d'un fichier via un autre.

Je chercherais d'où viens le problème :p.

Avec On Error Resume Next ça marche impec merci. Par contre je sais pas pourquoi maintenant dès que j'ouvre mon fichier liste on me propose de le mettre à jour...

Va falloir que je trouve un petit truc pour passer ça automatiquement :D.
 

job75

XLDnaute Barbatruc
Re : Modification d'un fichier via un autre.

Re,

Avec les formules entrées on crée des liaisons, et c'est normal qu'Excel, à l'ouverture du fichier, demande s'il faut les mettre à jour.

Si l'on veut éviter le message, il faut ouvrir d'abord tous les fichiers concernés par les liaisons...

A+
 

job75

XLDnaute Barbatruc
Re : Modification d'un fichier via un autre.

Re,

Une solution - radicale :cool: - c'est de supprimer toutes les formules à la fermeture du fichier dans une macro Private Sub Workbook_BeforeClose.

Puis de les recréer à l'ouverture du fichier dans une macro Private Sub Workbook_Open.

Ces 2 macros dans ThisWorkbook.

A+
 

Tatie Danielle

XLDnaute Nouveau
Re : Modification d'un fichier via un autre.

merci du conseil ;).

En attendant j'avais décochée "Confirmation de la mise à jour automatique des liens" dans le menu Outils<Options<Modifications et ça marchait (plus de message et liens mis à jours).

Mais c'était peut être un peu trop bourrin :D.
 

Tatie Danielle

XLDnaute Nouveau
Re : Modification d'un fichier via un autre.

Il me reste un ultime problème :confused:.

Mes liens sont bien colorés ça c'est good, par contre dès que je clique sur un de ces liens il se colore en violet.

Ce que j'aimerais c'est que la couleur ne change pas quand le lien hypertexte est visité.

J'ai donc cherché différents moyens de réaliser ça. Je suis allé dans Format<Style<LienHypertexteVisité mais ça me permet juste de changer la couleur violet en une autre (ça coince vu que mes liens peuvent etre bleu ou rouges dans ma liste).

J'ai donc testé "automatique" dans la case "couleur" de cette même fenêtre et ça m'a l'air de marcher :rolleyes:.

Le hic est que ma liste peut être rafraichie via un bouton et dès que je la rafraichie ça me remet tout comme à l'origine (à savoir : lien hypertexte visité en violet).

Comment pourrais-je déméler le chmilblique ? :)
Je sent que ça va repartir en VB tout ça...:D

Merci

EDIT :

Désolé, je ne sais pour quelle raison ça c'est mis à fonctionner même après le rafraichissement
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 677
Messages
2 090 825
Membres
104 677
dernier inscrit
soufiane12