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

Travailler sur deux classeurs dont on ne connait pas le nom

lucsky

XLDnaute Nouveau
Bonjour à tous,

Après avoir beaucoup appris en parcourant ce forum, je me jette à l'eau aujourd'hui pour mon premier message.
Je travaille sous Mac et sous Mac office 2011.

Pour vous situer je suis actuellement en train de réaliser une macro pour faciliter l'export de données depuis XL vers un logiciel de CRM (salesforce).
Le but de cette macro est tout simple, copier des colonnes d'un classeur vers un autre classeur en fonction d'un critère.
Le problème c'est que je ne connais pas le nom du fichier source et je veux permettre à l'utilisateur d'ouvrir le fichier qui l'intéresse.

Voici le code VBA que j'ai fait et qui ne fonctionne pas :
VB:
Sub ouverture_classeur()
'
Dim Classeur1 As Workbook
Dim Classeur2 As Workbook
    Set Classeur1 = Workbooks.Open(Application.GetOpenFilename)
    Set Classeur2 = Workbooks.Add()


        Classeur1.Worksheet("INFOS CONGRES").Range("$A$4:$O$302").AutoFilter Field:=3, Criteria1:="Piste"
        Range("E4:E300").Select
        Selection.Copy
    
            Classeur2.Worksheet("Feuil1").Range("A1").Select
            ActiveSheet.Paste

La macro me demande quel classeur je veux ouvrir et crée automatiquement un nouveau classeur mais par contre
Elle reste sur ce nouveau classeur et forcément elle ne trouve pas la page INFOS CONGRES.

Un grand merci pour votre aide, ça fait deux jours que j'essaie plein de choses et je ne trouve pas la solution

PS: Si je ne suis pas clair dites le moi
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Travailler sur deux classeurs dont on ne connait pas le nom

Re
Peut être comme ceci:
VB:
Sub ouverture_classeur2()
'
Dim Classeur1 As Workbook, Classeur2 As Workbook
Dim Fdepart As Worksheet, Farrive As Worksheet

Set Classeur1 = Workbooks.Open(Application.GetOpenFilename)
Set Classeur2 = Workbooks.Add()
Set Fdepart = Classeur1.Sheets("INFOS CONGRES")
Set Farrive = Classeur2.Sheets("Feuil1")

Classeur1.Activate

Fdepart.Range("$A$4:$O$4").AutoFilter Field:=3, Criteria1:="Piste"

    Farrive.Range("A1:A300").Value = Fdepart.Range("E4:E300").Value
    
    Farrive.Range("B1:C300").Value = Fdepart.Range("G4:H300").Value
    
    Farrive.Range("D1:G300").Value = Fdepart.Range("K4:N300").Value
    
    Farrive.Range("H1:H300").Value = Fdepart.Range("A4:A300").Value
    
    Farrive.Range("J1").Value = Fdepart.Range("B1").Value
    Classeur2.SaveAs Filename:= _
    "GEN:BD et MARKETING:CRM:Campagne Salesforce:Import campagne Congrès partnering:import" & Range("J1").Value & ".csv" _
    , FileFormat:=xlCSV, CreateBackup:=False
End Sub
Cordialement
 

lucsky

XLDnaute Nouveau
Re : Travailler sur deux classeurs dont on ne connait pas le nom

Un grand merci à vous deux
Je vous remercie pour votre réactivité et votre expertise

J'aime bien comprendre pkoi ça marche alors d'après vous pkoi ma première macro ne fonctionnait pas ??

Encore Merci
 

Efgé

XLDnaute Barbatruc
Re : Travailler sur deux classeurs dont on ne connait pas le nom

Re
Pour faire simple :
Tu utilise des select, donc il faut que tu active la bonne feuille pour sélectionner la cellule.
Cela oblige à une gestion (pour ne pas dire jonglerie) des feuilles et des classeurs (tu en utilise trois, les possibilités d'erreurs en sont multipliées).
Regarde mon dernier code, tu verras que je n'active que la feuille où le filtre est appliqué et que je ne sélectionne jamais rien.

Cordialement
 

lucsky

XLDnaute Nouveau
Re : Travailler sur deux classeurs dont on ne connait pas le nom

C'est vrai que je m'étais fais la remarque que tu ne passais pas par le copier coller,
En tout cas bravo pour l'astuce ça m'a bien servi

Encore MERCI
 

Discussions similaires

Réponses
7
Affichages
538
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…