Macro pour ouvrir fichier excel [Résolu/Fermé]

Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
- - Dernière réponse : tony020422
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
- 9 mai 2008 à 14:16
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:
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
818
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
20 avril 2012
133
3
Merci
une instructio du style

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

devrait aller

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 64101 internautes nous ont dit merci ce mois-ci

Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 64101 internautes nous ont dit merci ce mois-ci

zavenger
Messages postés
818
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
20 avril 2012
133 -
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.
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
1
Merci
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!
zavenger
Messages postés
818
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
20 avril 2012
133 -
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
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
0
Merci
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:
zavenger
Messages postés
818
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
20 avril 2012
133 -
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.
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
0
Merci
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!
zavenger
Messages postés
818
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
20 avril 2012
133 -
titi = ActiveWorkbook.Name
Workbooks.Open Filename:="E:\machin.xls"
Windows(titi).Activate

si c'est la question?
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
0
Merci
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:
zavenger
Messages postés
818
Date d'inscription
vendredi 29 février 2008
Statut
Membre
Dernière intervention
20 avril 2012
133 -
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
Messages postés
445
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
19 janvier 2010
6
0
Merci
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!