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

Excel Discussion :

Macro copier/coller des cellules


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 57
    Points : 35
    Points
    35
    Par défaut Macro copier/coller des cellules
    Bonjour,
    Je débute en VBA car je souhaite réaliser une macro que je pense assez basique et qui est:
    Copier certaines cellules (chiffres et lettres) d'une feuilles "Factures" et les coller à des dispositions différentes dans un autre classeur (qui sera fermé) et d'une feuille qu'on appellera "Créances" par exemple.*
    Vous sauriez un peu me guider vers le code à taper ?*
    Merci beaucoup !

  2. #2
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour,
    Ici un tuto intéressant pour ton cas : http://silkyroad.developpez.com/VBA/ClasseursFermes/
    Quant au code pour copier-coller : utilise l'enregistreur de macro pour le trouver. N'oublie pas de re-travailler le code de l'enregistreur de macro.
    L'enregistreur de macro va te donner un code ressemblant à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sheets("feuille1").Activate
    Range("A1").Select
    Selection.Copy
    Sheets("Feuil2").Activate
    Range("A1").Selection
    ActiveSheet.Paste
    Mais il n'est pas bon de travailler avec des Select/Activate/Selection ... La syntaxe "jolie" de Copy est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("feuille1").Range("A1").Copy destination:=Sheets("Feuil2").Range("A1")

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Ok merci pour les indices !

    J'essaierai tout ca ce soir en rentrant du travail mais juste une chose, ce lien me permet il de coller
    les cellules automatiquement à la dernière ligne de la feuille Excel ? (Pas à la limite des lignes Excel hein )

  4. #4
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Pour trouver la première ligne vide d'Excel, tu procèdes ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim ligVide As Long
    ligVide = Sheets("ma feuille").Range("A" & Rows.Count).End(xlUp).Row + 1
    Rows.Count donne le nbe de lignes total dans une feuille.
    End(xlUp) permet de remonter à la première ligne non vide (depuis le bas) --> donc la dernière ligne non vide depuis le haut.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Merci Riaolle !

    J'ai tapé ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub CommandButton2_Click()
        Dim ligVide As Long
        ligVide = Sheets("Créances").Range("A" & Rows.Count).End(xlUp).Row + 1
        Worksheets("Facture").Range("A2").Copy (Worksheets("Créances").Cells(ligVide, 2))
        Worksheets("Facture").Range("B2").Copy (Worksheets("Créances").Cells(ligVide, 3))
        Worksheets("Facture").Range("C2").Copy (Worksheets("Créances").Cells(ligVide, 5))
    End Sub
    J'ai mis le fichier en pièce jointe.
    Pouvez-vous me dire pourquoi les lignes ne se rajoutent pas les unes derrières les autres quand je clique plusieurs fois sur mon bouton ?

    Merci
    Fichiers attachés Fichiers attachés

  6. #6
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    2 choses :
    1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Facture").Range("A2").Copy ...
    Ici, tu ne copies que la cellule A2. Ne veux-tu pas copier toutes les lignes ? Il faut donc passer par une autre variable derLig qui permet de trouver la dernière ligne à copier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Worksheets("Facture")
        derLig = .Range("A" & Rows.Count).End(xlUp).Row
        .Range("A2:A" & derLig).Copy ...
    End With
    Est-ce que tu comprends ?

    2. Revenons sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligVide = Sheets("Créances").Range("A" & Rows.Count).End(xlUp).Row + 1
    • Rows.Count permet de compter le nombre de lignes total dans une feuille
    • Range("A" & Rows.Count) est donc la dernière cellule de la colonne A
    • Range("A" & Rows.Count).End(xlUp) permet de remonter vers la première cellule non vide en partant de al cellule ARows.Count, donc cela permet de remonter vers la première cellule non vide de la colonne A (depuis le bas). Donc, cela permet de trouver la dernière cellule non vide de la colonne A (depuis le haut).

    Or dans ton cas la colonne A est vide, donc cela remontera toujours vers la cellule A1. +1 cela donnera la ligne 2. Ainsi tes données sont toujours collées en ligne 2.
    Il faut que tu fasses l'opération sur une colonne qui se remplie (B par exemple).

    Sauras-tu adapter ?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 57
    Points : 35
    Points
    35
    Par défaut
    Ah cool ca fonctionne !

    J'ai modifié la colonne A en B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("B" & Rows.Count)

    Sinon,
    Oui je souhaite que copier la cellule, je compte utiliser cette macro pour un autre fichier ou les cellules à copier se trouvent dans des lignes et colonnes différentes.
    C'était mon fichier test

    Merci !

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

Discussions similaires

  1. [XL-2013] macro copier, effacer des cellule et coller à la suite
    Par mimi13580 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/11/2014, 14h26
  2. [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
  3. Réponses: 1
    Dernier message: 24/02/2014, 15h48
  4. Réponses: 81
    Dernier message: 16/09/2013, 14h48
  5. Réponses: 4
    Dernier message: 28/04/2011, 15h50

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