Excel renommer avec des macros

manoelinho -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour,
voici mon problème,

j'ai un fichier A sur lequel je saisi des données liées à des clients, et un fichier B qui est une base de données.
Ma feuille A contient une macro qui copie et colle certaines informations du fichier de saisi A dans le fichier base de donné B.
jusque la tout va bien mais le problème qui si pose a moi c'est que pour conserver mon fichier A initial, des que je fais une nouvelle saisi je l'enregistre sous avec un nouveau nom (celui du client).
le fichier A qui se nomme fiche de saisi devient "client X".

dès lors la macro qui copie des informations du fichier A au fichier B n'est plus valide sur le fichier client X.

comment puis-je faire pour que quand je chance le nom du fichier la macro change et au lieu de chercher le fichier initiale "saisie" elle recherche le fichier "client X"?

merci par avance.
Configuration: Windows Vista
Firefox 3.0.10

8 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Il serait intéressant de voir la macro et d'avoir un petit résumé de ce qu'elle fait.

    ;o)
    0
    1. manoelinho Messages postés 46 Statut Membre
       
      voici ma macro, mon probleme c'est que si le fichier A (ici "reservation pluriel") si je le renomme ("Client X"), la macro recherche toujours (quand j'utilise le fichier "client X") le fichier "reservation pluriel".
      Workbooks.Open Filename:= _
      "C:\Users\manoelinho\Desktop\dossier gestion boussinière\basededonnéecclient.xls"
      ActiveWindow.ScrollColumn = 3
      ActiveWindow.ScrollColumn = 1
      Rows("8:8").Select
      Selection.Insert Shift:=xlDown
      Range("A8").Select
      Windows("reservation pluriel.xls").Activate
      Range("E7").Select
      Selection.Copy
      Windows("basededonnéecclient.xls").Activate
      Range("B8").Select
      ActiveSheet.Paste
      Windows("reservation pluriel.xls").Activate
      Range("E8").Select
      Application.CutCopyMode = False
      Selection.Copy
      Windows("basededonnéecclient.xls").Activate
      Range("C8").Select
      ActiveSheet.Paste
      Windows("reservation pluriel.xls").Activate
      Range("E9").Select
      Application.CutCopyMode = False
      Selection.Copy
      Windows("basededonnéecclient.xls").Activate
      Range("D8").Select
      ActiveSheet.Paste
      Windows("reservation pluriel.xls").Activate
      Range("E10").Select
      Application.CutCopyMode = False
      Selection.Copy
      Windows("basededonnéecclient.xls").Activate
      Range("E8").Select
      ActiveSheet.Paste
      Windows("reservation pluriel.xls").Activate
      Range("E11").Select
      Application.CutCopyMode = False
      Selection.Copy
      Windows("basededonnéecclient.xls").Activate
      Range("F8").Select
      ActiveSheet.Paste
      Windows("reservation pluriel.xls").Activate
      Range("E12").Select
      Application.CutCopyMode = False
      Selection.Copy
      Windows("basededonnéecclient.xls").Activate
      Range("A8").Select
      ActiveSheet.Paste
      Windows("reservation pluriel.xls").Activate
      Range("E13").Select
      Application.CutCopyMode = False
      Selection.Copy
      Windows("basededonnéecclient.xls").Activate
      Range("G8").Select
      ActiveSheet.Paste
      Windows("reservation pluriel.xls").Activate
      Sheets("Feuil2").Select
      ActiveWindow.SmallScroll Down:=-33
      Sheets("Feuil3").Select
      ActiveWindow.SmallScroll Down:=-48
      Sheets("Feuil1").Select
      ActiveWindow.SmallScroll Down:=-12
      Range("C2:J3").Select
      Application.CutCopyMode = False
      Selection.Copy
      Windows("basededonnéecclient.xls").Activate
      Range("H8").Select
      Application.CutCopyMode = False
      ActiveCell.FormulaR1C1 = "Location plurielle"
      Range("G10").Select
      ActiveWindow.Close
      Sheets("Feuil1").Select
      ActiveWindow.SmallScroll Down:=105
      Range("E124").Select
      End Sub
      0
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    re,

    La macro est-elle utilisée lorsque le fichier avec le nom du client est utilisé ?
    Si oui, en modifiant comme suit je pense que ça doit règler le problème.

    En début de macro, mettre ça:

    Dim wk As Workbook
    dim wkdb as Workbook
    
        Set wk = ThisWorkbook
        set wkdb = Workbooks.Open Filename:= _ 
    "C:\Users\manoelinho\Desktop\dossier gestion boussinière\basededonnéecclient.xls" 
    


    Remplacer ensuite dans toute la macro "Windows("reservation pluriel.xls")" par "wk" et "Windows("basededonnéecclient.xls")" par "wkdb".

    Mettre juste avant End Sub de la macro:
    Set wk = Nothing
    Set wkdb = Nothing


    ;o)
    0
  3. manoelinho Messages postés 46 Statut Membre
     
    je ne parviens pas à utiliser ton aide
    quand je remplace dans ma macro excel, on me signal une erreur de synthaxe ou attente d'instruction pour la partie suivante

    set wkdb = Workbooks.Open Filename:= _
    "C:\Users\manoelinho\Desktop\dossier gestion boussinière\basededonnéecclient.xls"
    0
  4. Polux31 Messages postés 7219 Statut Membre 1 204
     
    re

    Fait comme ça :

    Set wk = Workbooks.Open("C:\le_chemin_complet_du_fichier_Excel_a_ouvrir")

    Exemple :

    Set wk = Workbooks.Open("C:\Documents and Settings\Polux\Mes documents\classeur1.xls")

    Je suis sous Excel 2003 et ça fonctionne très bien. Normalement ça fonctionne avec toutes les versions d'Excel.

    ;o)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. manoelinho Messages postés 46 Statut Membre
     
    je dois pas avoir compris ou j'ai oublié de faire une étape,
    est-ce que tu peux me montrer dans la macro suivante, Workbooks.Open Filename:= _
    "C:\Users\manoelinho\Desktop\dossier gestion boussinière\basededonnéecclient.xls"
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 1
    Rows("8:8").Select
    Selection.Insert Shift:=xlDown
    Range("A8").Select
    Windows("reservation pluriel.xls").Activate
    Range("E7").Select
    Selection.Copy
    Windows("basededonnéecclient.xls").Activate
    Range("B8").Select
    ActiveSheet.Paste
    Windows("reservation pluriel.xls").Activate
    Range("E8").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("basededonnéecclient.xls").Activate
    Range("C8").Select
    ActiveSheet.Paste
    Windows("reservation pluriel.xls").Activate
    Range("E9").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("basededonnéecclient.xls").Activate
    Range("D8").Select
    ActiveSheet.Paste
    Windows("reservation pluriel.xls").Activate
    Range("E10").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("basededonnéecclient.xls").Activate
    Range("E8").Select
    ActiveSheet.Paste
    Windows("reservation pluriel.xls").Activate
    Range("E11").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("basededonnéecclient.xls").Activate
    Range("F8").Select
    ActiveSheet.Paste
    Windows("reservation pluriel.xls").Activate
    Range("E12").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("basededonnéecclient.xls").Activate
    Range("A8").Select
    ActiveSheet.Paste
    Windows("reservation pluriel.xls").Activate
    Range("E13").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("basededonnéecclient.xls").Activate
    Range("G8").Select
    ActiveSheet.Paste
    Windows("reservation pluriel.xls").Activate
    Sheets("Feuil2").Select
    ActiveWindow.SmallScroll Down:=-33
    Sheets("Feuil3").Select
    ActiveWindow.SmallScroll Down:=-48
    Sheets("Feuil1").Select
    ActiveWindow.SmallScroll Down:=-12
    Range("C2:J3").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("basededonnéecclient.xls").Activate
    Range("H8").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "Location plurielle"
    Range("G10").Select
    ActiveWindow.Close
    Sheets("Feuil1").Select
    ActiveWindow.SmallScroll Down:=105
    Range("E124").Select
    End Sub

    je change le début aussi ou pas?
    0
  7. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    En gros, il faut déclarer un objet par classeur ouvert et indiquer au programme quel objet on manipule.

    Ceci sert à ça :
    Set wk = ThisWorkbook
    Set wkdb = Workbooks.Open ("Monfichier.xls")

    Je déclare 2 objets représentant chacun un classeur. "wk" est le classeur courant (celui qui contient la macro) et "wkdb" est mon classeur base de données que j'ouvre.

    Dans le code, il suffit de déclarer l'objet dans lequel on est :

    Faire wk.Activate, revient à faire Windows("reservation pluriel.xls").Activate ou Workbooks.("reservation pluriel.xls").Activate. Ensuite si je veux activer la cellule A2 de l'onglet "Feuil1" du classeur "reservation pluriel", je fais ceci :
    wk.Worksheets("Feuil1").Range("A2").Activate

    Ainsi le programme sait quel objet (classeur ici) doit être manipulé.

    De même, si je dois manipuler plusieurs onglets d'un même classeur, je peux faire ceci :

    Dim ws1 As Worksheet
    Dim ws1 As Worksheet
    
    Set ws1 = wk.Worksheets(1)  'pour l'onglet 1 ou wk.Worksheets("Lenomdelonglet")
    Set ws2 = wk.Worksheets(2)  'pour l'onglet 2 ou wk.Worksheets("Lenomdelonglet")


    ws1 est l'objet représentant l'onglet 1 du classeur "réservation pluriel" et ws2 l'objet représentant l'onglet 2 du classeur "réservation pluriel".

    Il faudrait que tu reprennes ton code et que tu déclares chaque objet, ensuite pour chaque ligne, mettre le préfixe (wk. ou wkdb.) à la commande qui va bien ...

    ;o)
    0
  8. manoelinho Messages postés 46 Statut Membre
     
    Merci beaucoup, j'ai compris et maintenant ça marche.
    Vous ne vous rendez pas compte du coup de pouce que vous venez de me donner,
    c'est un travail dans le cadre de mon stage de fin d'étude et sans ça je c pas comment j'aurai fait.

    encore merci
    0
  9. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Je suis content pour toi. Merci de mettre le sujet "Résolu" si c'est le cas.

    Bonne continuation et bon courage.

    Polux

    ;o)
    0