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 :)
 

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 :cool:
 

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 :eek:

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 ?
 

Discussions similaires

  • Question
Microsoft 365 Formules
Réponses
2
Affichages
473

Statistiques des forums

Discussions
312 677
Messages
2 090 825
Membres
104 677
dernier inscrit
soufiane12