Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Passage d'un fichier Excel à un autre

TestSugar1

XLDnaute Nouveau
(Re)bonjour

J'avance dans mes macros (merci vbacrumble !), il me reste juste quelques trucs à améliorer.

Dans mon fichier Excel de macros, Adresses erronées_macro.xls (= fichier cible), je veux commencer par ouvrir mon fichier source : BASE COMMUNE CLIENT.xls.

J'ai tenté le code suivant :

Code:
Sub Macro_recherchev()

[COLOR="green"]'Ouverture du fichier central de données : BASE COMMUNE CLIENT.xls[/COLOR]
Dim Nom As String, Fichier_source As String

Nom = Application.GetOpenFilename(filefilter:="Fichier Excel (*.xls),*.xls")
Workbooks.Open Filename:=Nom
Fichier_source = Split(Nom, "\")(UBound(Split(Nom, "\")))

[COLOR="Green"]'Set Destination = "Adresses erronées_macro.xls"[/COLOR]
[COLOR="red"]Set Destination = ThisWorkbook[/COLOR]

' Récupération du nom du contact dans le fichier central de données
    [COLOR="Red"]Workbooks(Destination).Activate[/COLOR]    
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Nom"
    Range("B2").Select
        ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC1,'[Fichier_source]annuaire'!R10C1:R10000C11,5,FALSE)"
    Range("B2").Select
    'Selection.AutoFill Destination:=Range("B2:B & [nblignes]"), Type:=xlFillDefault
    Selection.AutoFill Destination:=Range("B2:B500"), Type:=xlFillDefault
    'Range("B2:B & [nblignes]").Select
    Range("B2:B500").Select

J'ai mis en rouge ce qui me pose problème. Avant de faire l'ouverture du fichier source dans la macro, je la faisais à la main, et je pouvais mettre seulement
Code:
' Récupération du nom du contact dans le fichier central de données
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Nom"
    ...

Maintenant, si j'ouvre le fichier source dans la macro, je ne sais pas comment lui faire comprendre de repasser sur le fichier de travail (fichier cible) pour faire les modifs (ajouter des champs et des calculs).

Vous pouvez m'aider ?
Merci d'avance
 

JNP

XLDnaute Barbatruc
Re : Passage d'un fichier Excel à un autre

Bonjour TestSugar1 ,
Essaie
Code:
Dim Destination As String
Destination = ThisWorkbook.Name
Windows(Destination).Activate
Bonne journée
 

TestSugar1

XLDnaute Nouveau
Re : Passage d'un fichier Excel à un autre

Bonjour JNP

J'ai maintenant un autre problème, avec ce code. Voici ce que j'ai dans ma procédure :

Code:
Sub Macro_recherchev()

[COLOR="green"]'Ouverture du fichier central de données : BASE COMMUNE CLIENT – PROSPECT – aaaammjj.xls[/COLOR]Dim Nom As String, Fichier_source As String, Destination As String

If (MsgBox("SVP ouvrez le fichier Excel contenant la base comptes/clients : BASE COMMUNE CLIENT – PROSPECT –  20090224.xls", _
    vbInformation + vbOKOnly, "Ouverture fichier") = vbOK) Then

Nom = Application.GetOpenFilename(filefilter:="Fichier Excel (*.xls),*.xls")
Workbooks.Open Filename:=Nom
Fichier_source = Split(Nom, "\")(UBound(Split(Nom, "\")))
[COLOR="Green"]
'Set Destination = "Adresses erronées_macro.xls"[/COLOR]
Destination = ThisWorkbook.Name

[COLOR="green"]' Récupération du nom du contact dans le fichier central de données[/COLOR]
    Windows(Destination).Activate
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Nom"
    Range("B2").Select
    [COLOR="green"]'ActiveCell.FormulaR1C1 = _
    '    "=VLOOKUP(RC1,'[BASE COMMUNE CLIENT – PROSPECT –  20090224 - LCHE.xls]annuaire'!R10C1:R10000C11,5,FALSE)"[/COLOR]
    [COLOR="Red"]ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC1,'[Fichier_source]annuaire'!R10C1:R10000C11,5,FALSE)"[/COLOR]
    Range("B2").Select
    Selection.AutoFill Destination:=Range("B2:B500"), Type:=xlFillDefault
    Range("B2:B500").Select

Le problème maintenant c'est que la macro me rouvre la fenêtre d'ouverture de fichier plusieurs fois : en fait, quand elle passe sur la ligne en rouge ci-dessus.
Comment est-ce que je peux éviter ça ?

------
Une autre question : comment est-ce que je peux lui dire sur combien de lignes exécuter la formule, au lieu de fixer cela à 500 lignes : Range("B2:B500") ?

J'aimerais lui dire : exécute la formule de B2 jusqu'à Bxx où Bxx est la dernière ligne où il y a des données dans la colonne A.

J'ai essayé des choses comme :

Code:
Set nblignes = Range("A1", Range("A" & Rows.Count).End(xlUp))

Range("B2:B" & [nblignes].End(xlUp).Row).Select
mais ça ne donne rien.
 

JNP

XLDnaute Barbatruc
Re : Passage d'un fichier Excel à un autre

Re ,
Je pense que tu as mis une variable dans du texte...
Code:
[COLOR=#ff0000][COLOR=black]ActiveCell.FormulaR1C1 = _[/COLOR]
[COLOR=#ff0000]       "=VLOOKUP(RC1,'[[/COLOR][COLOR=red]" [/COLOR]& Fichier_source & "[/COLOR][COLOR=black]]annuaire'!R10C1:R10000C11,5,FALSE)"[/COLOR]
me paraitrait plus correct.
Pour la dernière ligne :
Code:
DerLigne = Range("A65536").End(xlUp).Row
Bon courage
 

TestSugar1

XLDnaute Nouveau
Re : Passage d'un fichier Excel à un autre

Effectivement, je m'étais plantée dans l'utilisation du nom de mon fichier source

Par contre, pour le DerLigne, comment je fais pour l'utiliser dans la suite ?

Code:
DerLigne = Range("A65536").End(xlUp).Row

[COLOR="Red"]Selection.AutoFill Destination:=Range("B2:B500"), Type:=xlFillDefault[/COLOR]

Comment je remplace mon B500 par B-DerLigne ?
 

JNP

XLDnaute Barbatruc
Re : Passage d'un fichier Excel à un autre

Re ,
Code:
Selection.AutoFill Destination:=Range("B2:B" & Range("A65536").End(xlUp).Row), Type:=xlFillDefault
Bonne journée
 

Discussions similaires

  • Question
Microsoft 365 Formules
Réponses
2
Affichages
490
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…