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 bases de donnees [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut Copier Coller les bases de donnees dynamiques
    Bonjour,

    Je dois ecrire seulement un code de Copy Paste, c'est pas difficile je sais mais en fait, je ne sais pas pourquoi il y a tjs des erreurs et je n'arrive pas a corriger. Pourriez vous m'aider ???

    En fait, je dois utiliser les variables differents et aussi les formules, parce qu'il y a bc de bases de donnees (plus de 4000 lignes). C'est pour ca que les cellules, colonnes pour Copy, Paste ne sont pas fixes mais bases sur des variables, formules. Je pense ca a cause des erreurs que je n'arrive pas a resoudre.

    Je voudrais copier les bases de donnees de "data Geo" a "Power Summary" (colonne 50 - 55). C'est simplement comme ca.

    Je viens de changer les codes plus simple, mais en fait ca marche toujours pas. C'est toujours l'erreur 1004 (Application defined or object defined error). Voila les codes:

    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
    Sub PowerActivities()
     
    Act = Worksheets("Data Power").Cells(3, 2).Value
    If Act = 1 Then Exit Sub Else
     
    Geo = Worksheets("Data Power").Cells(7, 2).Value
    If Geo = 0 Then Exit Sub Else
     
    'CCO
    Worksheets("Data Geo").Range(Cells(Geo, (Act - 1) * 3 + 3), Cells(Geo + 29, (Act - 1) * 3 + 5)).Copy
    Worksheets("Power Summary").Range(Cells(13, 50), Cells(41, 52)).Paste
     
    'Conso
    Worksheets("Data Geo").Range(Cells(Geo + 2164, (Act - 1) * 3 + 3), Cells(Geo + 29 + 2164, (Act - 1) * 3 + 5)).Copy
    Worksheets("Power Summary").Range(Cells(13, 53), Cells(41, 55)).Paste
     
    End Sub

    Vous pouvez voir plus détails dans la pièce jointe

    Merci beaucoup si vous pouvez m'aider.

    Je commence a etre decu de ne pas resoudre ca.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    Peux-tu nous dire sur quelle ligne se situe l'erreur, en utilisant le débogueur pas à pas, ce sera plus simple pour te réponder.

    C'est toujours l'erreur 1004

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    C'est toujours erreur 1004 pour les lignes de "Paste"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Worksheets("Power Summary").Range(Cells(13, 50), Cells(41, 52)).Paste
     
    Worksheets("Power Summary").Range(Cells(13, 53), Cells(41, 55)).Paste
    Je pense peut etre parce que le Range pour Paste ne convient pas au Range pour Copy. J'ai deja essaye de modifier plusieurs fois cette code pour Paste : soit utiliser des formules, soit des variables mais ca marche toujours pas

    je suis toujours bloquée avec cette petite code.

    Merci bc de m'aider

  4. #4
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Effectivement, là tu ne peux faire qu'un pastespecial.

    La solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Data Geo").Range(Cells(Geo, (Act - 1) * 3 + 3), Cells(Geo + 29, (Act - 1) * 3 + 5)).Copy Destination:=Worksheets("Power Summary").Range(Cells(13, 50), Cells(41, 52))

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    J'ai deja essaye ce code mais toujours cet erreur 1004

  6. #6
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    ET si avant ce code tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Power Summary").select

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    C'est pareil, ca change pas, tjs erreur 1004

  8. #8
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Non, ce que je voulais dire c'est est-ce que le nom de la feuille est le bon ?

    En gros est-ce que si tu selectionne cette feuille ça marche ou pas ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Si j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Power Summary").Select
    ca marche bien. ca selectionne le bon Sheet

    Mais quand j'ai ajoute le Paste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Data Geo").Range(Cells(Geo, (Act - 1) * 3 + 3), Cells(Geo + 29, (Act - 1) * 3 + 5)).Copy Destination:=Worksheets("Power Summary").Range(Cells(13, 50), Cells(41, 52))
    Ca marche pas, tjs cet erreur 1004.

    Donc, je pense mon code est deja bien. Mais un souci, je ne sais pas s'il y a l'erreur pour le Range ou non. C'est a dire : est ce Range(Cells(13, 50), Cells(41, 52)) correspond a Range(Cells(Geo, (Act - 1) * 3 + 3), Cells(Geo + 29, (Act - 1) * 3 + 5)) ou pas parce que l'un est le range pour les variables, l'autre c'est pour les cellules fixes????

  10. #10
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Bonjour

    J'ai essayé de remplacer ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'CCO
    Worksheets("Data Geo").Range(Cells(Geo, (Act - 1) * 3 + 3), Cells(Geo + 29, (Act - 1) * 3 + 5)).Copy
    Worksheets("Power Summary").Range(Cells(13, 50), Cells(41, 52)).Paste
    par ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Worksheets("Data Geo").Select
    Worksheets("Data Geo").Range(Cells(Geo, (Act - 1) * 3 + 3), Cells(Geo + 29, (Act - 1) * 3 + 5)).Copy
    Worksheets("Power Summary").Select
    Cells(13, 50).Select
    ActiveSheet.Paste
    et à priori ça passe

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    WOW, so great!!!!!!!!!!!!

    Ca marche

    Merci beaucoup. tu m'aides beaucoup

  12. #12
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour à tous,

    J'étais en train de penser à ça mais fgiambelluco a été plus rapide
    En effet ça peut coincer quand on essai de copier une plage dans une autre plage de taille différente, la solution est de diriger la copie vers la cellule en haut à gauche de la plage de destination, ainsi on évite cette erreur.

    Avec la correcition peut être que mon code fonctionne aussi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Data Geo").Range(Cells(Geo, (Act - 1) * 3 + 3), Cells(Geo + 29, (Act - 1) * 3 + 5)).Copy Destination:=Worksheets("Power Summary").Cells(13, 50)

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 10
    Points
    10
    Par défaut Et pour quoi pas comme ça
    Bonjour,

    Il m'arrive d'utiliser cette commande pour faire des plages de cellules :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("E1:G10").Value = Range("A1:C10").Value
    Après il faut jusque rajouter le nom des feuilles source et destination.
    Attention : il faut que les plages de cellules aient le même format.

    A+

    Christophe

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 24
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup pour les solutions.

    en fait, on pense tjs a type de range pour les plages determinees par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range (A1:B2).Value = Range(C1:D2).Value
    mais ce code n'est pas toujours convenable quand on fait avec les cellules qui varient selon les variables, les formules. C'est pour ca moi, je prefere les code de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells (a,b) ou Range(cells(a,b), Cells(c,d))
    dans ce cas la.

    Une petite question, normalement si on veut utiliser ce code de Range.Value au dessus, mais avec les variables, comment on peut faire?????

    C'est comme ca????
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(A&"i" &": B&"j").Value = Range(A&"x" &": B&"y").Value
    A,B : les colonnes
    i,j,x,y : les lignes

    Merci

  15. #15
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 944
    Points : 1 282
    Points
    1 282
    Par défaut
    Plutôt ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & i, "B" & j).Value= Range("A" & x, "B" & y).Value
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(cells(i,1),cells(j,2)).value=range(cells(x,1),cells(y,2)).value

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 06/07/2006, 20h20
  2. Réponses: 4
    Dernier message: 06/03/2006, 16h22
  3. Réponses: 5
    Dernier message: 14/02/2006, 15h32
  4. historique des bases de donnees
    Par killer dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 31/05/2005, 08h49
  5. Améliorations du "Copier / Coller" des XMLInstruct
    Par mchicoix dans le forum XMLRAD
    Réponses: 3
    Dernier message: 29/03/2005, 10h25

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