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 :

Syntaxe Copier/coller vers un autre fichier dans VBA.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 132
    Par défaut Syntaxe Copier/coller vers un autre fichier dans VBA.
    Bonjour j'ai besoin d'aide encore une fois,

    Je dois importer un tableau de bord d'un fichier excel vers un autre.
    Je pense le faire en visual basic avec du code.
    Mais dans mon code il y a une partie que je n'arrive pas à ecriture (manque de connaissance de ma part) et c'est le plus important.

    Voici mon code (algo) :
    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
    FONCTION bouton_actu ()
      VAR 
        li_deb, li_fin, col_deb, col_fin, i, j, case_deb,          
        case_fin :entier
      DEBUT
          afficher("A quelle ligne commence le tableau ?")
          saisir (li_deb)
          afficher("A quelle ligne se termine le tableau ?")
          saisir (li_fin)
          afficher("A quelle colonne commence le tableau ?")
          saisir (col_deb)
          afficher("A quelle colonne se termine le tableau ?")
          saisir (col_fin)
          POUR i DE li_deb A li_fin FAIRE
              POUR j DE col_deb A col_fin FAIRE
                     /*copier/coller de la case vers l'autre ou  
                        transpose*/
                     SI (case_deb="") ALORS
                         case_fin="" /*car kan la case de depart est 
                                              vide lorsque je la transpose il 
                                              me met un 0 au lieu de 
                                              laisser vide dans le nouveau 
                                              fichier.*/ 
                     FSI
              FPR
          FPR
    FINFONCT
    Alors c'est pour le copier/coller que j'aurais besoin d'aide.
    Je pense qu'il faut ouvrir un nouveau fichier (il existe deja) donc de preciser son chemin mais apres le flou.

    Et si vous avez une amélioration à proposer pour le code je suis également preneur.

    Merci de bien vouloir m'aider.
    Benjycool

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Salut benjicool,

    puis-je te suggérer de nous montrer le code VBA que tu arrives à créer plutôt que ton ALGO ?

    cela sera la base de travail... !

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 132
    Par défaut
    Ok pas de probleme, j'ai un peu avancé tout de même et je pense avoir trouvé :

    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
     
    Private Sub CommandButton1_Click()
     
    /*Les lignes et colonnes sont connues*/
     
    Dim cl1 As Workbook, cl2 As Workbook
    Dim f1 As Worksheet, f2 As Worksheet
     
    Set cl1 = ActiveWorkbook
    Set f1 = cl1.Worksheets("Feuil1")
     
    Workbooks.Open "G:\Cours\Stage\Stage 2eme année\test2.xls"
    For i = 2 To 6
        For j = 1 To 3
            Set cl2 = ActiveWorkbook
            Set f2 = cl2.Worksheets("Feuil1")
            f2.Cells(i, j).Value = f1.Cells(i, j).Value
        Next j
    Next i
     
    End Sub
    Toute mes données du tableau sont exportés vers cl2 mais je n'arrive pas à avoir la même mise ne page (pas les bord en gras et pas de couleur ainsi que les mêmes largeurs et longueur).
    Comment je peut faire ???

    Benjycool

  4. #4
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 403
    Par défaut
    Il suffit d'utiliser la méthode .Copy pour copier les cellules et ainsi copier également la mise en page.

    Et pas besoin de boucle. tu peux travailler avec le range de cellules nécessaires. (A2:C6)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    f1.range("A2:C6").copy
    f2.range("A2:c6").paste

    (non testé....)

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 132
    Par défaut
    Ok j'ai essayer mais ca na pas marcher je vous montre mon code puis le message d'erreur survenue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim cl1 As Workbook, cl2 As Workbook
    Dim f1 As Worksheet, f2 As Worksheet
     
    Set cl1 = ActiveWorkbook
    Set f1 = cl1.Worksheets("Feuil1")
     
    Workbooks.Open "G:\Cours\Stage\Stage 2eme année\test2.xls"
     
            Set cl2 = ActiveWorkbook
            Set f2 = cl2.Worksheets("Feuil1")
            f1.Range("A6").Copy
            f2.Range("A6").Paste
    Erreur d'éxécution '438':
    Propriété ou méthide non gérée par cet objet.

    Que faire ???

    Benjycool

  6. #6
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Essaye de remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            f1.Range("A6").Copy
            f2.Range("A6").Paste
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            f1.Range("A6").Copy f2.Range("A6")
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/05/2015, 16h25
  2. [XL-2010] Copier feuilles vers un autre fichier
    Par fra7878 dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 21/01/2015, 16h56
  3. [XL-2010] Copier coller vers un autre classeur
    Par lilmonie dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 15/10/2014, 15h45
  4. Réponses: 4
    Dernier message: 31/01/2012, 19h51
  5. Réponses: 1
    Dernier message: 29/12/2008, 10h12

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