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 :

La copie d'une ligne ne se fait pas


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut La copie d'une ligne ne se fait pas
    Bonjour à tous,

    J'ai un classeur dans lequel je copie des lignes d'un classeur ouvert dans une autre instance de Excel quand une condition est remplie.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            GestWbk.Sheets(1).Rows(j).Copy
            ActiveWorkbook.Sheets(1).Cells(NoLine, 1).Insert
    Rien n'est copié et quand je ferme le classeur, je reçois l'habituel message me proposant de vider le presse-papier.
    Pourtant, en exécution pas à pas, je constate que la ligne copiée contient bien des valeurs.
    En remplaçant Insert par Paste, j'ai le message d'erreur "Propriété ou méthode non gérée par cet objet".
    De même, quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            GestWbk.Sheets(1).Rows(j).Copy _
            Destination:=ActiveWorkbook.Sheets(1).Cells(NoLine, 1)
    Je reçois le message "La méthode Copy de la classe Range a échoué".

    Je peux récupérer une à une les valeurs des cellules de la feuille source et les copier dans la feuille cible, mais ce n'est pas très élégant.
    C'est pourquoi je vous demande si quelqu'un a une idée sur la raison de cet échec de copie.

    Merci d'avance.

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    je pense que ton problème vient de la copie sur une autre instance d'excel.
    Ne peux tu pas faire ton traitement dans la même instance d'application?

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Ne peux tu pas faire ton traitement dans la même instance d'application?
    Je ne veux pas que l'utilisateur puisse voir le classeur source, c'est la raison pour laquelle je l'ouvre dans une autre instance d'excel.
    Mon hypothèse est également que c'est la raison du dysfonctionnement, mais c'est quand même un bug.

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Je ne veux pas que l'utilisateur puisse voir le classeur source, c'est la raison pour laquelle je l'ouvre dans une autre instance d'excel.
    Et en désactivant l'affichage, ca ne conviendrait pas?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Application.ScreenUpdating = False
     
    ... CODE
     
    Application.ScreenUpdating = True

  5. #5
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour à tous,
    Une solution totalement différente serait peut être de passer par une variable tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Ligne()
    Ligne = Application.Transpose(GestWbk.Sheets(1).Rows(j).Value)
    ActiveWorkbook.Sheets(1).Cells(NoLine, 1).Resize(1, UBound(Ligne, 1)) = Application.Transpose(Ligne)

    PS : je n'ai pas testé ce code, donc... à voir!

  6. #6
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne = Application.Transpose(GestWbk.Sheets(1).Rows(j).Value)
    génère l'erreur incompatibilité de type

  7. #7
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par defluc Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne = Application.Transpose(GestWbk.Sheets(1).Rows(j).Value)
    génère l'erreur incompatibilité de type
    Exact. Donc ... fausse bonne idée.
    Désolé.
    Je laisse la main à jfontaine.
    Bon courage et bonne journée

Discussions similaires

  1. [XL-2003] copie d'une ligne sur autre feuille
    Par sofynet dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/07/2011, 14h25
  2. copie d'une ligne d'une table access vers le méme table
    Par FST_PFE dans le forum VBA Access
    Réponses: 4
    Dernier message: 31/10/2008, 10h23
  3. Copie d'une ligne dans une table
    Par Logp524 dans le forum WinDev
    Réponses: 8
    Dernier message: 23/06/2007, 19h41
  4. [SQL Server] Créer la copie d'une ligne
    Par joeln3 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 01/06/2006, 16h54
  5. [VB6]créer une copie d'une ligne d'une table
    Par h82kev dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 01/02/2006, 16h08

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