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 :

copier coller des cellules entre deux feuil excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 2
    Par défaut copier coller des cellules entre deux feuil excel
    Bonjour,
    je souhaite avoir un code pour avoir la possibilité de cliqué sur un bouton et il me donne le choix de choisir le fichier source (entree dans le code) et ensuite je choisie le fichier final (sortie).
    ensuite il copie une valeur d'une certaines cellules (i11 dans le code) et la coller dans la cellule (b2) dans le fichier final.
    j'ai essayer avec un code mais j'ai un souci d'incompatibilité . help plz !
    le fichier est joint au message.

    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
    Private Sub CommandButton1_Click()
    Dim Entree As Workbook, Sortie As Workbook
     
    Nomfichierentree = Application.GetOpenFilename("Fichier Excel (*.xlsx), *.xlsx")
    ' On verifie que l'on a selectionné un nom de classeur
    If Nomfichierentree <> False Then
        ' On ouvre le classeur
        Set Entree = Workbooks.Open(Nomfichierentree)
    NomFichierSortie = Application.GetOpenFilename("Fichier Excel (*.xlsx), *.xlsx")
    If NomFichierSortie <> False Then
    Set Sortie = Workbooks.Open(NomFichierSortie)
     
    End If
    End If
    'lirelesdonnées
    With Workbooks(Entree)
    .Range("i11").Copy
    End With
     
    'trouverlevide
    Sortie.Activate
    Sheets("feuil1").Select
    Sheets("feuil1").Activate
    For i = 2 To 366
     
    If Cells(b, 2) = "" Then
    'lirelesdonnées
    Sheets("feuil1").Select
    Sheets("feuil1").Activate
    Cells(b, 2).Select
     
    i = 366
    End If
    Next i
     'ecrirelesdonnées
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
    Application.CutCopyMode = False
    End Sub
    Fichiers attachés Fichiers attachés

  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
    Bonjour,
    peut-être t'inspirer dune méthode de Pierre Fauconnier dans ce post, pour ouvrir le fichierhttp://www.developpez.net/forums/d48...ichier-format/
    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
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Découpe ton code en petits morceaux. Tout le code dans le clic d'un bouton n'est jamais une solution.

    Ecris d'abord une fonction qui te permet de récupérer les nom des fichiers. Stocke ces données dans des variables. Ecris une fonction qui ouvre un fichier dont tu connais le nom. Définis tes plages de copie et de collage puis copie-colle de la palge source vers la plage cible. Ferme les fichiers ouverts.


    Normalement, les codes donnés ici devraient être encadrés dans des gestions d'erreur, mais je te donne ici le fil conducteur. Note que lorsque tu ouvres un fichier Excel, il devient actif. Il est donc important de travailler avec des variables pour être certain de choisir les plages des bons fichiers...

    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
    Sub Process()
      Dim SourceFileName As String
      Dim TargetFileName As String
      Dim SourceRange As Range
      Dim TargetRange As Range
      Dim SourceWB As Workbook
      Dim TargetWb As Workbook
     
      SourceFileName = GetFileName()
      TargetFileName = GetFileName()
      If SourceFileName <> "" And TargetFileName <> "" Then
        Set SourceWB = GetWorkbook(SourceFileName)
        Set TargetWb = GetWorkbook(TargetFileName)
        Set SourceRange = SourceWB.Worksheets("...").Range("a1")
        Set TargetRange = TargetWb.Worksheets("...").Range("B12")
        SourceRange.Copy TargetRange
        TargetWb.Close False
        SourceWB.Close False
      edif
    End Sub
     
    Function GetFileName() As String
      Dim dialbox As FileDialog
      Dim Filename As String
     
      Set dialbox = Application.FileDialog(msoFileDialogFilePicker)
     
      dialbox.Show
      If dialbox.SelectedItems.Count > 0 Then GetFileName = dialbox.SelectedItems(1)
    End Function
     
    Function GetWorkbook(Filename As String) As Workbook
      If Dir(Filename) <> "" Then Set GetWorkbook = Workbooks.Open(Filename)
    End Function
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [XL-2010] Problème macro copier-coller des cellules dans deux feuilles Excel
    Par benadry dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/04/2014, 19h05
  2. [XL-2007] Copier coller de cellules entre deux classeurs
    Par Chtik dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/06/2013, 20h55
  3. Réponses: 4
    Dernier message: 28/04/2011, 15h50
  4. Copier coller des cellules excel ?
    Par Angelssen dans le forum Windows Forms
    Réponses: 1
    Dernier message: 02/02/2010, 12h42
  5. Réponses: 5
    Dernier message: 14/02/2006, 14h32

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