Macro pour ouvrir fichier excel

Résolu
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   -  
tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Voici le contexte de ma question: j'ai crée 3 macros sous excel, et la 3eme fait appel a des données situées dans un autres fichier excel.
J'aimerais donc savoir comment créee une macro permettant d'ouvrir ce fichier excel nécessaire à la 3eme macro en meme temps que celle ci, afin d'éviter de devoir a chaque fois penser a ouvrir le fichier excel nécessaire.
En gros que dois je rajouter a ma macro n°3 pour qu'en la lancant se lance également le fichier excel necessaire à son bon fonctionnement...

J'espère avoir été suffisamment clair,

merci pour vos réponses !

bonne journée:
Configuration: Windows XP
Internet Explorer 6.0

7 réponses

  1. zavenger Messages postés 817 Statut Membre 161
     
    une instructio du style

    Workbooks.Open Filename:=Chemin & "\" & Fichier, local:=True

    devrait aller
    3
  2. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
     
    euuhh comment dire je pense que tu as compris ce que je cherchais mais je pense que je n'ai pas compris ce que tu m'as expliqué.. qu'est ce que "titi" et "machin" ?

    si je veux que le classeur principal sur lequel les macros s'appliquent est Open_parts_return_requests_28-04-2008.xls
    tandis que celui qui s'ouvre tout seul par la macro que tu m'as expliqué s'appelle table de conversion 2.xls

    alors le scrpit serait

    Open_parts_return_requests_28-04-2008.xls=ActiveWorkbook.Open_parts_return_requests_28-04-2008.xls

    Workbooks.Openfilename:=C:\Documents and Settings\aolivero\Bureau\Projet fichier SAP\Open_parts_return_requests_28-04-2008.xls

    Workbook(Open_parts_return_requests_28-04-2008.xls).Activate

    J'ai bien compris??!

    Dans ce cas je met ou ce script?
    dans la macro, a la suite de la commande pour l'ouverture automatique du table de conversion 2.xls c ca?!

    Merci beaucoup !

    PS: j'ai l'impression que ce que tu m'as ecrit est bancal: titi est definit comme actif au départ
    puis tu devrais activer en fait celui qu'on veur (le principal) mais tu finis avec l'activation de titi...c'est bizarre...mais peut etre n'ai je pas tout compris:! lol
    3
    1. zavenger Messages postés 817 Statut Membre 161
       
      Donc

      titi = ActiveWorkbook.Name 'je memorise le classeur actif (celui ou je veux que les macros s executent) dans la variable titi

      Workbooks.Open Filename:="E:\machin.xls" ' j ouvre le fichier qui ne manque (celui qui contient ta bdd)

      Windows(titi).Activate ' et je reactive le classeur ou j etais avant l ouverture de ma bdd

      Comme je te l'ai dit tu mets ce bout de code n'importe ou dans ta macro.
      0
  3. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
     
    ok mais ca marche pas bien.. je dois taper texto

    titi = ActiveWorkbook.Name
    Workbooks.Open Filename:="C:\Documents and Settings\aolivero\Bureau\Projet fichier SAP\table de conversion 2.xls"
    Windows(titi).Activate

    sans jamis lui écrire le classeur actif à savoir Open_parts_return_requests_28-04-2008.xls ?

    Parce que la a priori le table de conversion 2 s'ouvre bien tt seul et apparait a l ecran, mais survient apres un mess d'erreur, ciomprends pas pkoi...
    A priori l'erreur provient du fait que le PERSONAL.XLS est masqué ou non... a l'ouverture du fichier principal
    Open_parts_return_requests_28-04-2008.xls lorsqu'il l'est masqué ca déconne mais lorsqu'il est afficher ca marche....va comprendre

    l'erreur est celle la
    ActiveWorkbook.Worksheets("P0090_Overview_outstanding_clai").AutoFilter.Sort. _
    SortFields.Clear

    Merci pour ta precieuse aide!
    1
    1. zavenger Messages postés 817 Statut Membre 161
       
      c'est bien les 3 lignes de code que tu dois mettre, mais il faut que tu les inseres dans ta macro a un endroit qui correpond a un momemt ou le classeur actif est celui dans lequel tu fais toutes tes operations.

      Sinon, je ne vois pas pourquoi cela ne marcherais pas
      0
  4. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
     
    bonjour zavenger (encore!)

    Mon nom de fichier est "table de conversion 2.xls et l'emplacmement est
    "C:\Documents and Settings\aolivero\Bureau\Projet fichier SAP"

    ca donnerait quoi alors?!

    et il faut le glisser ou ce code? dans le script ss VB da la macro?. avant ou aprés sub?

    le script pour la macro 3 étant le suivant :

    Sub tricolonne_nomfrancais_ordonne()
    '
    ' trigéné Macro
    '
    ' Touche de raccourci du clavier: Ctrl+Maj+E
    '
    Range("A:A,E:E,F:F,I:I,H:H").Select
    Range("H1").Activate
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 8
    Range("A:A,E:E,F:F,I:I,H:H,L:L,M:M,N:N,O:O").Select
    Range("O1").Activate
    Selection.Delete Shift:=xlToLeft
    Range("J:J,I:I").Select
    Range("I1").Activate
    Selection.Delete Shift:=xlToLeft
    ActiveWindow.ScrollColumn = 7
    ActiveWindow.ScrollColumn = 6
    ActiveWindow.ScrollColumn = 5
    ActiveWindow.ScrollColumn = 4
    ActiveWindow.ScrollColumn = 3
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 1
    ActiveWorkbook.Worksheets("P0090_Overview_outstanding_clai").AutoFilter.Sort. _
    SortFields.Clear
    ActiveWorkbook.Worksheets("P0090_Overview_outstanding_clai").AutoFilter.Sort. _
    SortFields.Add Key:=Range("B1:B80"), SortOn:=xlSortOnValues, Order:= _
    xlAscending, DataOption:=xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("P0090_Overview_outstanding_clai").AutoFilter. _
    Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    ActiveWindow.SmallScroll Down:=-9
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "code distributeur"
    With ActiveCell.Characters(Start:=1, Length:=17).Font
    .Name = "Arial"
    .FontStyle = "Normal"
    .Size = 10
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = 1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontNone
    End With
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "code vendeur"
    With ActiveCell.Characters(Start:=1, Length:=12).Font
    .Name = "Arial"
    .FontStyle = "Normal"
    .Size = 10
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = 1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontNone
    End With
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "numéro garantie"
    With ActiveCell.Characters(Start:=1, Length:=15).Font
    .Name = "Arial"
    .FontStyle = "Normal"
    .Size = 10
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = 1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontNone
    End With
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "numéro chassis"
    With ActiveCell.Characters(Start:=1, Length:=14).Font
    .Name = "Arial"
    .FontStyle = "Normal"
    .Size = 10
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = 1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontNone
    End With
    Range("E1").Select
    ActiveCell.FormulaR1C1 = "nom panne"
    With ActiveCell.Characters(Start:=1, Length:=9).Font
    .Name = "Arial"
    .FontStyle = "Normal"
    .Size = 10
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = 1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontNone
    End With
    Range("F1").Select
    ActiveCell.FormulaR1C1 = "date panne"
    With ActiveCell.Characters(Start:=1, Length:=10).Font
    .Name = "Arial"
    .FontStyle = "Normal"
    .Size = 10
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = 1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontNone
    End With
    Range("G1").Select
    ActiveCell.FormulaR1C1 = "date demande pièce"
    With ActiveCell.Characters(Start:=1, Length:=18).Font
    .Name = "Arial"
    .FontStyle = "Normal"
    .Size = 10
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = 1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontNone
    End With
    Range("H1").Select
    ActiveCell.FormulaR1C1 = "date limite d'envoi TMA"
    With ActiveCell.Characters(Start:=1, Length:=23).Font
    .Name = "Arial"
    .FontStyle = "Normal"
    .Size = 10
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = 1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontNone
    End With
    Range("H2").Select
    ActiveWindow.ScrollColumn = 1
    Columns("A:A").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    End Sub
    Sub rajoute_numéro_compte_client_MME()
    '
    ' insertcolonncomptemme Macro
    '
    ' Touche de raccourci du clavier: Ctrl+Maj+F
    '
    ActiveCell.FormulaR1C1 = "n°compte MME"
    With ActiveCell.Characters(Start:=1, Length:=12).Font
    .Name = "Arial"
    .FontStyle = "Normal"
    .Size = 10
    .Strikethrough = False
    .Superscript = False
    .Subscript = False
    .OutlineFont = False
    .Shadow = False
    .Underline = xlUnderlineStyleNone
    .ColorIndex = 1
    .TintAndShade = 0
    .ThemeFont = xlThemeFontNone
    End With
    Range("A2").Select
    ActiveCell.FormulaR1C1 = _
    "=VLOOKUP(RC[2],'table de conversion 2.xls'!R2C1:R199C4,2,FALSE)"
    Columns("C:C").Select
    Selection.TextToColumns Destination:=Range("C1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 1), TrailingMinusNumbers:=True
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollRow = 12
    ActiveWindow.ScrollRow = 19
    ActiveWindow.ScrollRow = 22
    ActiveWindow.ScrollRow = 33
    ActiveWindow.ScrollRow = 40
    ActiveWindow.ScrollRow = 43
    ActiveWindow.ScrollRow = 50
    ActiveWindow.ScrollRow = 57
    ActiveWindow.ScrollRow = 61
    ActiveWindow.ScrollRow = 68
    ActiveWindow.ScrollRow = 71
    ActiveWindow.ScrollRow = 75
    ActiveWindow.ScrollRow = 82
    ActiveWindow.ScrollRow = 85
    ActiveWindow.ScrollRow = 92
    ActiveWindow.ScrollRow = 96
    ActiveWindow.ScrollRow = 103
    ActiveWindow.ScrollRow = 107
    ActiveWindow.ScrollRow = 110
    ActiveWindow.ScrollRow = 114
    ActiveWindow.ScrollRow = 121
    ActiveWindow.ScrollRow = 124
    ActiveWindow.ScrollRow = 131
    ActiveWindow.ScrollRow = 135
    ActiveWindow.ScrollRow = 142
    ActiveWindow.ScrollRow = 149
    ActiveWindow.ScrollRow = 152
    ActiveWindow.ScrollRow = 156
    ActiveWindow.ScrollRow = 159
    ActiveWindow.ScrollRow = 163
    ActiveWindow.ScrollRow = 166
    ActiveWindow.ScrollRow = 170
    ActiveWindow.ScrollRow = 173
    ActiveWindow.ScrollRow = 177
    ActiveWindow.ScrollRow = 180
    ActiveWindow.ScrollRow = 184
    ActiveWindow.ScrollRow = 187
    ActiveWindow.ScrollRow = 191
    ActiveWindow.ScrollRow = 187
    ActiveWindow.ScrollRow = 180
    ActiveWindow.ScrollRow = 177
    ActiveWindow.ScrollRow = 173
    ActiveWindow.ScrollRow = 170
    ActiveWindow.ScrollRow = 166
    ActiveWindow.ScrollRow = 163
    ActiveWindow.ScrollRow = 159
    ActiveWindow.ScrollRow = 156
    ActiveWindow.ScrollRow = 152
    ActiveWindow.ScrollRow = 149
    ActiveWindow.ScrollRow = 145
    ActiveWindow.ScrollRow = 142
    ActiveWindow.ScrollRow = 138
    ActiveWindow.ScrollRow = 135
    ActiveWindow.ScrollRow = 131
    ActiveWindow.ScrollRow = 128
    ActiveWindow.ScrollRow = 124
    ActiveWindow.ScrollRow = 121
    ActiveWindow.ScrollRow = 117
    ActiveWindow.ScrollRow = 114
    ActiveWindow.ScrollRow = 110
    ActiveWindow.ScrollRow = 107
    ActiveWindow.ScrollRow = 103
    ActiveWindow.ScrollRow = 99
    ActiveWindow.ScrollRow = 96
    ActiveWindow.ScrollRow = 92
    ActiveWindow.ScrollRow = 89
    ActiveWindow.ScrollRow = 85
    ActiveWindow.ScrollRow = 82
    ActiveWindow.ScrollRow = 78
    ActiveWindow.ScrollRow = 75
    ActiveWindow.ScrollRow = 71
    ActiveWindow.ScrollRow = 68
    ActiveWindow.ScrollRow = 64
    ActiveWindow.ScrollRow = 61
    ActiveWindow.ScrollRow = 57
    ActiveWindow.ScrollRow = 54
    ActiveWindow.ScrollRow = 50
    ActiveWindow.ScrollRow = 47
    ActiveWindow.ScrollRow = 43
    ActiveWindow.ScrollRow = 40
    ActiveWindow.ScrollRow = 36
    ActiveWindow.ScrollRow = 33
    ActiveWindow.ScrollRow = 29
    ActiveWindow.ScrollRow = 26
    ActiveWindow.ScrollRow = 22
    ActiveWindow.ScrollRow = 19
    ActiveWindow.ScrollRow = 15
    ActiveWindow.ScrollRow = 12
    ActiveWindow.ScrollRow = 8
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollRow = 1
    Range("A2").Select
    Selection.AutoFill Destination:=Range("A2:A3"), Type:=xlFillDefault
    Range("A2:A3").Select
    Selection.AutoFill Destination:=Range("A2:A18"), Type:=xlFillDefault
    Range("A2:A18").Select
    Selection.AutoFill Destination:=Range("A2:A80"), Type:=xlFillDefault
    Range("A2:A80").Select
    Range("B44:B45").Select
    ActiveWindow.SmallScroll Down:=-66
    Range("A2").Select
    End Sub

    Merci encore et encore ! !

    Bonne journée:
    0
    1. zavenger Messages postés 817 Statut Membre 161
       
      Workbooks.Open Filename:="C:\Documents and Settings\aolivero\Bureau\Projet fichier SAP\table de conversion 2.xls", local:=True

      Et tu le mets en debut de la premiere que tu appelles. Attention, il te faudra reselectionner le classeur de travail, car le classeur actif sera celui qui va s'ouvrir.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
     
    ok c'est parfait ca marche! juste pour info on peut faire un truc simple pour que le changment de classeur s'effectue lui aussi automatiquement?!

    Merci beaucoup pour ta patience et ton professionnalisme!
    0
    1. zavenger Messages postés 817 Statut Membre 161
       
      titi = ActiveWorkbook.Name
      Workbooks.Open Filename:="E:\machin.xls"
      Windows(titi).Activate

      si c'est la question?
      0
  7. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
     
    Merci pour ttes ces réponses mais ca ne marche toujours pas

    La première macro me supprime certaines lignes ne contenant pas un mot clé dans une colonne dans le fichier Open_parts_return_requests_28-04-­2008.xls et m'ouvre le fichier table de conversion 2.xls nécessaire au fonctionnement de la 2eme macro

    Cette derniere tri ordonne et renomme les colonnes du 1er fichier tout en insérant une colonne vierge

    La derniere macro a l'aide de la fct recherchev permet d'importer une colonne de table de conversion 2.xls dans Open_parts_return_requests_28-04-­2008.xls

    Je voudrais donc simplement qu'entre la 1ere et la 2eme macro se fasse un changement de classeur actif cad que table de conversion 2.xls qui apparait ds la macro 1 devienne inactif et que Open_parts_return_requests_28-04-­2008.xls redeveinne actif de facon à ce que la macro 2 fonctionne directement derrière ...

    Surement est ce plus clair mais aprés différents essais ca ne fontionne toujours pas

    voila le script de la prmiere macro

    Sub efface_ligne_étranger()
    Dim i As Integer
    i = 2
    Application.ScreenUpdating = False
    Do While Cells(i, 2) <> ""
    If (Cells(i, 2) <> 241) Then
    Cells(i, 1).EntireRow.Delete
    Else
    i = i + 1
    End If
    Loop
    Application.ScreenUpdating = True

    Workbooks.Open Filename:="C:\Documents and Settings\aolivero\Bureau\Projet fichier SAP\table de conversion 2.xls"

    End Sub

    qui fait ce que je veux et fait apparaitre table de conversion 2.xls
    et pour lancer la 2eme macro il faut revenir sur le classeur Open_parts_return_requests_28-04-­2008.xls en cliquant dessus.

    aprés la 3eme macro fonctionne correctement..

    du coup je ne sais pas ou insérer le fameux code...

    Merci beaucoup de ton aide:
    0
    1. zavenger Messages postés 817 Statut Membre 161
       
      Sub efface_ligne_étranger()
      Dim i As Integer
      i = 2
      Application.ScreenUpdating = False
      Do While Cells(i, 2) <> ""
      If (Cells(i, 2) <> 241) Then
      Cells(i, 1).EntireRow.Delete
      Else
      i = i + 1
      End If
      Loop
      Application.ScreenUpdating = True

      titi = ActiveWorkbook.Name
      Workbooks.Open Filename:="C:\Documents and Settings\aolivero\Bureau\Projet fichier SAP\table de conversion 2.xls"
      Windows(titi).Activate

      End Sub
      0
  8. tony020422 Messages postés 566 Date d'inscription   Statut Membre Dernière intervention   6
     
    Ecoute c'est parfait merci ! !
    j'ai eu 2 - 3 petits soucis mais a priori tout tourne bien maintenant ! !

    Mille mille merci, t'es vraiment un patron en Excel!

    Bonn journée big boss!

    A bientôt!
    0