IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

recopier une cellule d'un classeur dans un autre classeur [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Ingénieur Support BE
    Inscrit en
    Décembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Support BE

    Informations forums :
    Inscription : Décembre 2011
    Messages : 79
    Par défaut recopier une cellule d'un classeur dans un autre classeur
    Bonjour à tous,

    J'ai recopié un FichierModele en des FichierCible.
    Je travaille depuis un Fichier nommé Fdt2012.
    Je voudrais remplacer les cellules A1 et C1 de la Feuille NOM du FichierCible
    par les cellules des colonnes A et B de la Feuille Janv2012 du fichier FdT2012,
    sachant que les fichiers ne se trouvent pas sous le même répertoire.
    J'ai réussi à ouvrir le fichier et activer la feuille NOM mais le code suivant me donne une erreur de syntaxe que je n'arrive pas à résoudre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks(FichierCible).Worksheets("NOM").Range("A1").Value = _
       Worbooks("D\Fdt_2012\macroFdt2012.xlsm).Worsheets(Janv2012).Range(Ligne,1).Value
    Si quelqu'un pouvait m'aider à lever cette erreur, je pourrai ensuite poursuivre.
    Merci d'avance à tous ceux qui m'aide et me font progresser.
    Véronique

    Code complet actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    Option Explicit
    Sub DeploiementFdTJanv2012()
     
    Dim PremLigne As Integer, DerLigne As Integer, Ligne As Integer
    Dim valeur() As Variant
    Dim cel As Object
    Dim Fichier As String, Feuille As String, Prenom_Pers As String
    Dim FichierModele As String, FichierCible As String
     
     
     
     
    'Calcul du nombre de ligne à lire
    Sheets("Janv2012").Activate
    PremLigne = Range("A1").End(xlDown).Row + 1
    DerLigne = Range("A65536").End(xlUp).Row
     
    FichierModele = "D:\FdT_2012\FdT_2012_MODELE.xls"
     
     
    ' Copie du fichier FdT_MODELE.xls vers les FichierCible du type FichierNom en les rangeant dans les repertoires correspondant au service
     
    For Ligne = PremLigne To DerLigne
     
        If Len(Cells(Ligne, 1).Value) > 0 And Len(Cells(Ligne, 4).Value) > 0 Then
     
     FichierCible = Cells(Ligne, 4).Value & "\" & Cells(Ligne, 5).Value
            FileCopy FichierModele, FichierCible
     
    '     ouvrir le classeur cible à modifier
    Application.Workbooks.Open (FichierCible)
    ' activer la feuille NOM
     
    Sheets("NOM").Activate
     
    'Remplacer les  cellules A1 et C1 de la Feuille NOM du  FichierCible
    'par les cellules des colonnes A et B de la Feuille Janv2012 du fichier FdT2012,
    'sachant que les fichiers ne se trouvent pas sous le meme répertore
     
    Workbooks(FichierCible).Worksheets("NOM").Range("A1").Value = _
       Worbooks("D\Fdt_2012\macroFdt2012.xlsm).Worsheets(Janv2012).Range(Ligne,1).Value
     
       Workbooks(FichierCible).Worksheets("NOM").Range("C1").Value = _
       Worbooks("D\Fdt_2012\macroFdt2012.xlsm).Worsheets(Janv2012).Range(Ligne,2).Value
     
     End If
     
    Next Ligne
     
    End Sub

  2. #2
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    regardes d'abord ta syntaxe :
    Worbooks au lieu de Workbooks
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  3. #3
    Membre confirmé
    Profil pro
    Ingénieur Support BE
    Inscrit en
    Décembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Support BE

    Informations forums :
    Inscription : Décembre 2011
    Messages : 79
    Par défaut Et maintenant erreur d'exécution 9 : "l'indice n'appartient pas à la sélection
    Bonjour,

    Il y avait effectivement une grosse erreur de syntaxe mais j'ai maintenant erreur d'exécution 9 : "l'indice n'appartient pas à la sélection avec le code suivant. Je ne vois pas ce qui peux coincer, mais c'est peut être évident pour certains d'entre vous........
    J'avoue ne plus savoir où regarder.....
    Merci pour votre aide.....
    Véronique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks(FichierCible).Worksheets("NOM").Range("A1").Value = _
       Workbooks("D\Fdt_2012\macroFdt2012.xlsm").Worksheets("Janv2012").Range(Ligne,1).Value

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Déjà, un conseil, habitues-toi à spécifier la dernière ligne comme ça (tu es avec excel2007) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerLigne = Range("A" & rows.count).End(xlUp).Row
    as-tu testé la valeur de "FichierCible" ? avec un test comme
    y a-t-il ".xls" ou ".xlsx" ou ".xlsm" à la fin ?

    "macroFdt2012.xlsm" est-il ouvert ?

    quelle est la valeur de ligne ?

    peut-être
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Membre confirmé
    Profil pro
    Ingénieur Support BE
    Inscrit en
    Décembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Support BE

    Informations forums :
    Inscription : Décembre 2011
    Messages : 79
    Par défaut Rien de neuf ....
    Bonsoir,

    Merci pour ta réponse.
    Je testais PremLigne, DerLigne (maintenant modifiée), et Ligne. Tout correspondant à ce que je veux.
    Je teste FichierCible qui est OK et qui s'ouvre bien. J'ai tout mis en xlsm, les macros sont activées à l'ouverture, mais cela ne change rien...

    Rien n'y fait
    La nuit portera peut être conseil....

    Véronique

  6. #6
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    As-tu regardé ma dernière proposition,
    Si ligne est un chiffre, changes ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks(FichierCible).Worksheets("NOM").Range("A1").Value = _
       Workbooks("D\Fdt_2012\macroFdt2012.xlsm").Worksheets("Janv2012").cells(Ligne,1).Value
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Workbooks(FichierCible).Worksheets("NOM").Range("A1").Value = _
       Workbooks("D\Fdt_2012\macroFdt2012.xlsm").Worksheets("Janv2012").Range(Ligne,1).Value
    et attention fichiercible doit être de la forme, par exemple "toto.xlsm" et non "toto"
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  7. #7
    Membre confirmé
    Profil pro
    Ingénieur Support BE
    Inscrit en
    Décembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Support BE

    Informations forums :
    Inscription : Décembre 2011
    Messages : 79
    Par défaut Ca roule....
    Bonjour,
    Merci à tous,
    En adaptant le code de corona, J'ai réussi à obtenir ce que je voulais.
    C'EST GRANDIOSE...
    Mille merci.....

    Pour revenir sur le problème de départ je devais avoir un conflit entre un nom de classeur (string) et le classeur lui même (workbook).
    Du basique pour certains, mais le temps que je m'en aperçoive......
    Je vais maintenant continuer sur une autre discussion pour faire progresser ma mise à jour et continuer à progresser

    Véronique


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Option Explicit
    Sub DeploiementFdTJanv2012()
     
    Dim PremLigne As Integer, DerLigne As Integer, Ligne As Integer
    Dim cel As Object
    Dim Fichier As String, Feuille As String
    Dim NomFichierModele As String, NomFichierCible As String
    Dim ClasseurMaitre As Workbook, FeuilleMaitre As Worksheet, ClasseurCible As Workbook
    Dim App As New Excel.Application
     
     
    'Initialisation du classeur Maitre, du Fichier modèle
    Set ClasseurMaitre = ThisWorkbook: Set FeuilleMaitre = ClasseurMaitre.Worksheets("Janv2012")
    NomFichierModele = "D:\FdT_2012\FdT_2012_MODELE.xlsm"
     
     
    'Calcul du nombre de ligne à lire
    With FeuilleMaitre
    PremLigne = Range("A1").End(xlDown).Row + 1
    DerLigne = Range("A" & Rows.Count).End(xlUp).Row
     
     
     
     
    ' Copie du fichier FdT_MODELE.xls vers les FichierCible du type FichierNom en les rangeant dans les repertoires correspondant au service
     
    For Ligne = PremLigne To DerLigne
     
        If Len(Cells(Ligne, 1).Value) > 0 And Len(Cells(Ligne, 4).Value) > 0 Then
     
            NomFichierCible = Cells(Ligne, 4).Value & "\" & Cells(Ligne, 5).Value
                FileCopy NomFichierModele, NomFichierCible
     
            ' Copie des elements de la source à la cible de la forme cible=source
            'remplacer les cellules A1 et C1 de la Feuille NOM du FichierCible
            'par les cellules des colonnes A et B de la Feuille Janv2012 du fichier FdT2012,
     
             App.Visible = False ' Permet de ne pas voir l'ouverture du fichier et la copie des cellules
                            'Changer False en True pour voir
     
                Set ClasseurCible = App.Workbooks.Open(NomFichierCible) ' Lien entre le classeur et le nom de fichier
                ClasseurCible.Worksheets("NOM").Range("A1").Value = .Cells(Ligne, 1).Value
                ClasseurCible.Worksheets("NOM").Range("C1").Value = .Cells(Ligne, 2).Value
     
            ' fermer ficihier en sauvegardant
                ClasseurCible.Close SaveChanges:=True
     
     
     
        End If
    Next Ligne
     
    App.Quit: Set App = Nothing
     
    End With
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Copier cellules en ligne dans une colonne qui se trouve dans un autre classeur
    Par Wushugringo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/02/2015, 08h07
  2. Réponses: 10
    Dernier message: 18/02/2015, 16h48
  3. [XL-2007] Entrée la valeur d'une cellule d'un autre classeur dans une variable
    Par Coco_O dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/05/2011, 16h25
  4. recopier une cellule dans tout un champ
    Par sriverxp dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/05/2010, 22h15
  5. Exécution d'une procédure qui se trouve dans un autre classeur
    Par enchanté dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/07/2007, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo