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 :

Comment copier coller un tableau en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 11
    Points : 10
    Points
    10
    Par défaut Comment copier coller un tableau en VBA
    Bonjour ,V
    j'ai une feuille excel qui contient plusieurs tableaux je souhaite trouver une macro qui permet de copier le dernier tableau et le coller juste en dessous tout en laissant une ligne vide afin de séparer le dernier du nouveau .
    Voici mon code qui ne fonctionne pas et surtout même si ça marchais ce serait possible que pour la selection du tableau allant de A1 a GJ18 or moi je veux utiliser cela a chaque fois c'est a dire copier le dernier tableau qui changera forcement qui deviendra l'avant dernier donc je ne peux pas preciser sa taille vu qu'elle est susceptible de changer
    n'hesitez pas a me poser des questions si ce n'est pas clair

    Voici mon code qui me genere erreur d'execution 1004

    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
    Sub nadounette()
     
    dim b as integer
    ' on demande combien de tableau on veut coller
    b = InputBox("Entrez le nombre de tableaux nécessaire?")
     
     
    Range("A1:GJ18").Select ' 
    Selection.Copy
    'on copie
     
     
     
    Range("A65536").End(xlUp).Offset(2, 0).Select
    ActiveSheet.Paste
     
     
    End Sub
    merci mes amis informaticien !!!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    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
    Option Explicit
     
    Private Sub CopierTableau()
     
      Dim intLng As Integer, intDeb As Integer, intCol As Integer
     
      With ActiveSheet
     
        intLng = .Range("A" & .Rows.Count).End(xlUp).Row
        intDeb = .Cells(intLng, 1).End(xlUp).Row
        intCol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
     
        .Range(.Cells(intDeb, 1), .Cells(intLng, intCol)).Copy
        .Cells(intLng, 1).Offset(2, 0).PasteSpecial
     
      End With
     
    End Sub

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 20
    Points : 25
    Points
    25
    Par défaut
    Autre méthode:

    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
    Sub nadounette()
     
        Dim b, i, Ligne, Colonne As Integer
        Ligne = 0
        Colonne = 0
     
        ' on demande combien de tableau on veut coller
        b = InputBox("Entrez le nombre de tableaux nécessaire?")
     
        ' calcul du nombre de lignes du 1er tableau
        While ActiveWorkbook.Worksheets(1).Range("A1").Offset(Ligne, 0) <> ""
            Ligne = Ligne + 1
        Wend
     
        ' calcul du nombre de colonnes du 1er tableau
        While ActiveWorkbook.Worksheets(1).Range("A1").Offset(0, Colonne) <> ""
            Colonne = Colonne + 1
        Wend
     
        ' Copie du tableau
        ActiveWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(Ligne, Colonne)).Copy
     
        ' Collage du(des) tableau(x)
        For i = 1 To b
            ActiveWorkbook.Worksheets(1).Cells((i * Ligne) + (i + 1), 1).PasteSpecial
        Next i
     
     
    End Sub

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Bonjour,

    ne pas oublier la propriété CurrentRegion allégeant le code …

  5. #5
    Invité
    Invité(e)
    Par défaut
    Pour copier plusieurs tableaux d'un seul coup:
    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
    Option Explicit
     
    Private Sub CopierTableau()
     
      Dim intLng As Integer, intDeb As Integer, intCol As Integer
      Dim intQue As Integer, i As Integer
     
      intQue = InputBox("Entrez le nombre de tableaux nécessaires:")
     
      For i = 1 To intQue
       With ActiveSheet
     
         intLng = .Range("A" & .Rows.Count).End(xlUp).Row
         intDeb = .Cells(intLng, 1).End(xlUp).Row
         intCol = .Cells(1, .Cells.Columns.Count).End(xlToLeft).Column
     
         .Range(.Cells(intDeb, 1), .Cells(intLng, intCol)).Copy
         .Cells(intLng, 1).Offset(2, 0).PasteSpecial
     
       End With
      Next i
     
    End Sub
    Suite à la remarque pertinente de 'Marc-L':
    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
    Option Explicit
     
    Private Sub CopierTableau()
     
      Dim intLng As Integer, intQue As Integer, i As Integer
     
      intQue = InputBox("Entrez le nombre de tableaux nécessaires:")
     
      For i = 1 To intQue
        With ActiveSheet
     
          intLng = .Range("A" & .Rows.Count).End(xlUp).Row
          .Cells(intLng, 1).CurrentRegion.Copy .Cells(intLng, 1).Offset(2, 0)
     
        End With
      Next i
     
    End Sub
    Dernière modification par AlainTech ; 26/09/2013 à 07h50. Motif: Fusion de 2 messages

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut
    Citation Envoyé par Nadounette123 Voir le message
    […] copier le dernier tableau et le coller juste en dessous tout en laissant une ligne vide afin de séparer le dernier du nouveau .

    Donc la copie peut se faire en une seule commande (s'il n'y a pas de trou entre les colonnes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub DemoCopieDernierTableau()
        With ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Cells.Count).CurrentRegion
            .Copy Cells(.Rows(.Rows.Count).Row + 2, .Columns(1).Column)
        End With
    End Sub

    Précision : à partir de la version 2007, préférer la propriété CountLarge à la place de Count pour l'objet Cells


    __________________________________________________________________________________________

    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion …


    __________________________________________________________________________________________
    A celle qui dit que les hommes sont tous pareils, lui répondre qu'il ne fallait pas tous les essayer !

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 11
    Points : 10
    Points
    10
    Par défaut MERCI A VOUS TOUS
    Merci de votre aides les amis !!!! mille merci

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

Discussions similaires

  1. Comment Copier/Coller contenu internet dans un classeur Excel -VBA
    Par woody42 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/06/2013, 17h31
  2. Copier coller niveau intermediaire en vba
    Par balthior dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/06/2007, 18h05
  3. Réponses: 3
    Dernier message: 23/09/2006, 16h19
  4. Réponses: 5
    Dernier message: 14/02/2006, 15h32
  5. copier coller avec Pastespecial en VBA
    Par stormless dans le forum Général VBA
    Réponses: 1
    Dernier message: 06/11/2005, 12h59

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