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 :

Problème avec une copie de cellules [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 42
    Points : 32
    Points
    32
    Par défaut Problème avec une copie de cellules
    Bonjour,

    Je tente de copier des cellules dans un fichier 1, puis de les copier après la dernière ligne dans un autre fichier (après avoir retirer des colonnes dans ce nouveau fichier).

    J'ai fait ça:


    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
    'on copie les cellules du fichier A
     
    macol = NumCol("Acheteur")
    LigneFin = Application.WorksheetFunction.CountA(Columns(macol))
    Range("2:" & LigneFin).Select
    Selection.Copy
     
    ' On ouvre le fichier B et on y ajoute les ligne de A après l'avoir nettoyé
    export = Application.GetOpenFilename("Classeurs Excel (*.xls), *.xls", 1, "Choisir le fichier d export", , False)
     
    Workbooks.Open Filename:=export
    export = ActiveWorkbook.Name
     
    ' On masque les premières ligne inutiles
    Rows("1:5").Select
    Selection.EntireRow.Hidden = True
     
    ' On efface les colonnes prix, prix unitaire
    macol = NumCol("prix")
    Columns(macol).Delete
    macol = NumCol("prix unitaire")
    Columns(macol).Delete
     
    'on ajoute les lignes du fichier A à la fin du fichier B
    macol = NumCol("Numéro de la commande")
    LigneFin = Application.WorksheetFunction.CountA(Columns(macol))
    LigMag = LigneFin + 1
     
     
    Range("A" & LigMag).Select
    ActiveSheet.Paste
    Il me fait une erreur 1004 en disant que la méthode paste a échoué... j'ai tenté de plusieurs façon, j'ai de temps en temps une erreur 438...

    Si quelqu'un voit mon erreur, je suis preneur...
    D'avance merci!

    P.S NumCol est une fonction qui donne le numéro de la colonne contenant le texte entré en variable dans sa première ligne.

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Utilise plutôt des variables objets Workbook et worksheet comme ceci
    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
    Dim MaCol As Integer, LaCol As Integer
    Dim LigneFin As Long, NouvLig As Long
    Dim Wbk As Workbook
    Dim Sh As Worksheet
    Dim Export
     
    With ThisWorkbook.Worksheets("Feuil1")           'à adapter
        MaCol = NumCol("Acheteur")
        LigneFin = .Cells(.Rows.Count, MaCol).End(xlUp).Row
        ' On ouvre le fichier B et on y ajoute les ligne de A après l'avoir nettoyé
        Export = Application.GetOpenFilename("Classeurs Excel (*.xls), *.xls", 1, "Choisir le fichier d export", , False)
        If Export <> False Then
            Set Wbk = Workbooks.Open(Export)
            Set Sh = Wbk.Worksheets(1)               'Première feuille du fichier qui vien d'être ouvert
     
            ' On masque les premières ligne inutiles
            Sh.Rows("1:5").EntireRow.Hidden = True
     
            ' On efface les colonnes prix, prix unitaire
            Sh.Columns(NumCol("prix")).Delete
            Sh.Columns(NumCol("prix unitaire")).Delete
     
            'on ajoute les lignes du fichier A à la fin du fichier B
            LaCol = NumCol("Numéro de la commande")
            NouvLig = Sh.Cells(Sh.Rows.Count, LaCol).End(xlUp).Row + 1
            .Rows("2:" & LigneFin).Copy Sh.Range("A" & NouvLig)
            Set Sh = Nothing
            Wbk.Close True
            Set Wbk = Nothing
        End If
    End With

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 42
    Points : 32
    Points
    32
    Par défaut
    Je suis pas à l'aise avec les workbook... je pensais que l'on pouvait s'en passer pour ça

    J'ai repris ton code en mettant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With ThisWorkbook.Worksheets("Export")
    Export est le nom de ma feuille...
    au début pour me placer dans la bonne feuille (en partant du principe que je suis dans le workbook A et il me dt que "l'indice n'appartient pas à la selection).
    J'ai aussi essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Workbook.Name(syst).Worksheets("Export")
    syst étant la variable ou j'ai sauvé le nom de mon workbook
    sans succès...
    comment je m'assure d'avoir le bon workbook?

  4. #4
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Explique nous la disposition de tes fichiers. notamment le nom de la feuille de ton fichier contenant la macro et le nom de la feuille du classeur ouvert.

    Je suis pas à l'aise avec les workbook
    C'est le moment de retrousser les manches. Plus tard tu sauras que ce n'est pas la mer à boire et qu'ainsi tu n'auras aucun souci de savoir quel est le classeur actif.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Septembre 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 42
    Points : 32
    Points
    32
    Par défaut
    Mon fichier qui contient les macro s'appelle SysAjout avec une feuille contenant des boutons avec plusieurs macros.

    J'ai sauvé le nom de mon fichier A dans syst et la feuille où sont les lignes à copier s'appelle Export. J'ouvre un fichier B dans lequel je doit copier (après la dernière ligne de la première feuille). Tous les fichiers sont dans le même dossier au même niveau.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Septembre 2012
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Septembre 2012
    Messages : 42
    Points : 32
    Points
    32
    Par défaut
    J4ai réussi à retrouver mon workbook comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    With Workbooks(syst).Worksheets("ExportImprimeur")
    j'ai été idiot de vouloir faire un .name -_- et j'avais oublié le s à la fin de workbooks

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

Discussions similaires

  1. [XL-2003] Problème lors d'une copie de cellules visibles après un filtre
    Par As.Plate dans le forum Excel
    Réponses: 4
    Dernier message: 12/08/2014, 15h53
  2. [JBOSS] [Struts] Problème avec une application
    Par Tiercel dans le forum Wildfly/JBoss
    Réponses: 5
    Dernier message: 13/07/2004, 13h50
  3. Problème avec une instruction OUTER /Postgres
    Par Volcomix dans le forum Langage SQL
    Réponses: 14
    Dernier message: 21/04/2004, 16h56
  4. problème avec une requête imbriquée
    Par jaimepasteevy dans le forum Langage SQL
    Réponses: 13
    Dernier message: 05/12/2003, 10h29
  5. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33

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