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 :

Vba copier coller pb [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Par défaut Vba copier coller pb
    Bonjour,

    j'ai un problème dans ma macro mais j'avoue que je ne le comprends.

    J'ai créé une macro qui permet de copier une ligne d'information et qui la colle dans une autre feuille à la suite des autres informations copiées.
    c'est une sorte de création de base de données. Une fois les info saisies dans la page "Saisie", on clique sur un bouton qui copie/colle ces infos dans la pages "Bdd" et supprime les infos de la pages "Saisie". Et ainsi de suite à chaque nouveau clique sur le bouton "Valider".

    Voici ma macro:
    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
    Sub Saisie()
     
    Copier la zone à coller, toujours la même dans la feuille "Saisie"
    Worksheets("Saisie").range("A2:AE2").Copy
    
    'Coller la plage selectionner dans la feuille "Saisie" dans la feuille "Bdd" à la suite des autres collages
    Worksheets("Bdd").Activate
    range("B2").Select
    'Selection.End(xlDown).Select 'Erreur à ce niveau: Erreur définie par l'application ou par l'objet.
    ActiveCell.Offset(1, 0).Activate
    ActiveSheet.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    
    'Effacer le contenu saisie de la feuille "Saisie"
    Worksheets("Saisie").cells("A1:AF31").Delete
    Worksheets("Saisie").Select
    End Sub
    Merci de votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Par défaut
    Bonjour nattybb,

    L'utilisation de "Select" en cascade est fastidieuse et ne sert à rien sauf à ralentir ton code. Je pense que ce code fait la même chose sans problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Saisie()
     
    Copier la zone à coller, toujours la même dans la feuille "Saisie"
    Worksheets("Saisie").range("A2:AE2").Copy
     
    'Coller la plage selectionner dans la feuille "Saisie" dans la feuille "Bdd" à la suite des autres collages
    Worksheets("Bdd").Range("B3").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
     
    'Effacer le contenu saisie de la feuille "Saisie"
    Worksheets("Saisie").Cells("A1:AF31").ClearContents
    Worksheets("Saisie").Select
    End Sub
    Je te laisse tester et me remonter tout problème éventuel.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Par défaut
    Merci pour la réponse,

    le problème est qu'avec cette ligne je ne copie qu'en B3 or il faudrait que les informations se copient, à chaque nouvelle saisie, les unes en dessous des autres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'Coller la plage selectionner dans la feuille "Saisie" dans la feuille "Bdd" à la suite des autres collages
    Worksheets("Bdd").Range("B3").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    Les informations sont: 1 ligne=1 individu, les colonnes=les informations relatives à l'individu.
    J'avais fait une boucle For avec un If mais ça n'a pas marché.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim I as Integer 'Ligne
    Worksheets("Bdd").Activate
    For I = 2 to 200
     If Cells (I,2) ="" then
    Worksheets("Bdd").Range(I,2).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
    End if
    Next
    Je viens de tester ton programme est j'ai toujours cette erreur:
    Erreur d'exécution 1004, Erreur définie par l'application ou par l'objet.

    Encore merci

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Par défaut
    C'est quelle ligne qui te lève l'erreur ?

    En attendant ta réponse, voici une modification du code pour remplir les lignes les unes en dessous des autres, d'après ce que je comprends de ton besoin :

    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
    Sub Saisie()
    Dim lig as Long 'Voir le type selon le nombre potentiel de lignes à traiter
     
    'Copier la zone à coller, toujours la même dans la feuille "Saisie"
    Worksheets("Saisie").range("A2:AE2").Copy
     
    'Coller la plage selectionner dans la feuille "Saisie" dans la feuille "Bdd" à la suite des autres collages
     
    lig = 1
    Do While Worksheets("Bdd").Range("B3").Cells(lig, 1) <> ""
        lig = lig + 1
    Loop
     
    Worksheets("Bdd").Range("B" & lig + 2).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
     
    'Effacer le contenu saisie de la feuille "Saisie"
    Worksheets("Saisie").Rows(2).Delete
    Worksheets("Saisie").Select
    End Sub
    Je te conseille vivement de faire des sauvegardes de ton fichier avant de tester le code, des fois que des lignes contenant des données soient supprimées, étant donné que le test de ligne vide est fait uniquement sur la 1ère cellule.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 3
    Par défaut
    Super
    merci ça marche,

    Bonne soirée et encore merci.

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

Discussions similaires

  1. [XL-2007] VBA Copier coller boutons
    Par vivi4561 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/02/2011, 16h49
  2. Débutant en VBA - Copier coller selon conditions
    Par anthony787 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/08/2010, 16h29
  3. [XL-2003] Bug VBA Copier/coller
    Par Loki83 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 16/04/2010, 13h13
  4. [XL-2007] VBA copier/coller image
    Par kaena dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/04/2009, 11h38
  5. code VBA copier coller
    Par AVNAIM dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 01/06/2008, 12h22

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