[CHERCHE] Macro pour controler/modifier

Résolu
bilou -  
 bilou -
Bonjour,

Pour les besoins de mon travail, j'aurais besoin d'une macro qui me permettrai de récupérer et lister des infos situées dans plusieurs classeurs et une deuxième qui pourrai réaliser l'opération inverse. Je m'explique :

J'ai un Classeur A et un dossier B contenant 3 classeurs, B1, B2 et B3. Ces classeurs ont tous en cellule A1 une date.
Je souhaite récupérer toutes ces dates dans la feuille "DATE" de mon classeur A sous cette forme :
colonne A|colonne B
Date B1 | B1.xls
Date B2 | B2.xls
Date B3 | B3.xls

La seconde macro me permettrai de réinjecter les valeurs Date B1, Date B2 et Date B3 dans les classeurs correspondants, sachant que j'aurais peut être modifier certaines dates pour les besoins de mon travail.

Je sais que c'est une requête qui n'est pas simple, en tout cas j'espère que certains pourront m'aider.

D'avance merci

Bilou

2 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Re-
    Tu n'as que 3 classeurs concernés par cet Import-export de date?
    Le dossier contenant ces 3 classeurs contient-il d'autres fichiers? classeurs?
    Ces classeurs ont tous en cellule A1 une date. Cellule A1 ok, mais de qu'elle feuille? les noms de ces feuilles sont ils identiques dans les 3 classeurs??
    Cordialement,
    Franck P
    0
  2. bilou
     
    Bonjour,
    Le dossier peut contenir plus d'une centaine de classeur en fonction de l'affaire, tous identiques dans leur structure. la date se trouve en A1 sur la feuil1.
    Si cela marche je me plongerai dedans pour l'adapter mais si déjà ca fonctionne, ce serai vraiment super!
    Si tu as besoin d'autres infos n'hésite pas, je surveille le thread.

    Merci pour l'attention portée a mon problème en tout cas

    Bilou
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      S'agit-il toujours du même répertoire?
      0
    2. bilou
       
      Oui, en fait le principe c'est de coller dans le répertoire les classeurs que je veut contrôler en masse et modifier si besoin sans avoir à tout ouvrir.
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Bon alors :

      Tu ouvres ce classeur.
      Pour "importer" tes dates : ALT+F8 choix : ImporterDates
      Pour "exporter" tes dates : ALT+F8 choix : ExporterDates

      Les codes :
      Option Explicit
      
      Sub ImporterDates()
      Dim objShell As Object, objFolder As Object
      Dim Chemin As String, fichier As String
      
          Set objShell = CreateObject("Shell.Application")
          Set objFolder = objShell.BrowseForFolder(&H0&, "Choisir un répertoire", &H1&)
      
      If objFolder Is Nothing Then
          MsgBox "Abandon opérateur", vbCritical, "Annulation"
      Else
          Columns(1).NumberFormat = "m/d/yyyy"
          Chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & "\"
          [B1] = Chemin
          fichier = Dir(Chemin & "*.xls")
          Do While Len(fichier) > 0
              ThisWorkbook.Names.Add "Plage", _
                  RefersTo:="='" & Chemin & "[" & fichier & "]Feuil1'!$A$1"
              With Sheets("Feuil2")
                  .[A1] = "=Plage"
                  .[A1].Copy
                  Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues
                  Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Offset(0, 1) = fichier
              End With
              fichier = Dir()
          Loop
      End If
      End Sub
      
      Sub ExporterDates()
      Dim Chemin As String, fichier As String
      Dim maDate As Date
      Dim Lign As Long, DrLig As Long
      
      Application.ScreenUpdating = False
      With Sheets("Feuil1")
          DrLig = .Range("A" & Rows.Count).End(xlUp).Row
          For Lign = 2 To DrLig
              maDate = .Cells(Lign, 1).Value
              If Not IsDate(maDate) Then
                  MsgBox "Format de date incorrecte à la ligne : " & Lign
                  Exit Sub
              End If
              Chemin = [B1]
              fichier = .Cells(Lign, 2).Value
              Workbooks.Open Chemin & fichier
              With ActiveWorkbook
                  .Sheets("Feuil1").Range("A1") = CDate(maDate)
                  .Save
                  .Close
              End With
          Next
      End With
      Application.ScreenUpdating = True
      End Sub
      
      0
    4. bilou
       
      Merci beaucoup Pijaku, je teste ça tout de suite!!
      Je m'attendais pas a une réponse aussi rapide, c'est vraiment cool.

      Bilou
      0
    5. bilou
       
      Rebonjour,

      C'est impeccable, ça marche du tonnerre et dans les deux sens, je vais y mettre un peu le nez pour voir comment lui faire récupérer d'autres cellules sous le même principe et se sera exactement comme je le voulais.

      Un grand grand merci pour ton aide pijaku, grâce a toi je vais gagner un temps fou et j'aurais un vrai visu sur mes tableaux de rendus.

      merci encore!

      Bilou
      0