Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2012, 10h48   #1
Membre chevronné
 
Avatar de defluc
 
Architecte
Inscription : mai 2002
Messages : 1 057
Détails du profil
Informations personnelles :
Âge : 62

Informations professionnelles :
Activité : Architecte

Informations forums :
Inscription : mai 2002
Messages : 1 057
Points : 745
Points : 745
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 :
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 :
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.
defluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 11h16   #2
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 920
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 920
Points : 7 237
Points : 7 237
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?
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 11h37   #3
Membre chevronné
 
Avatar de defluc
 
Architecte
Inscription : mai 2002
Messages : 1 057
Détails du profil
Informations personnelles :
Âge : 62

Informations professionnelles :
Activité : Architecte

Informations forums :
Inscription : mai 2002
Messages : 1 057
Points : 745
Points : 745
Citation:
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.
defluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 11h49   #4
Expert Confirmé Sénior
 
Avatar de jfontaine
 
Homme Jérôme FONTAINE
Contrôleur de Gestion
Inscription : juin 2006
Messages : 3 920
Détails du profil
Informations personnelles :
Nom : Homme Jérôme FONTAINE
Âge : 38
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Contrôleur de Gestion

Informations forums :
Inscription : juin 2006
Messages : 3 920
Points : 7 237
Points : 7 237
Citation:
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 :
1
2
3
4
5
6
 
Application.ScreenUpdating = False
 
... CODE
 
Application.ScreenUpdating = True
__________________
Jérôme

Citation:
"Ils ne savaient pas que c'était impossible, alors ils l'ont fait" - Marc Twain
Si la réponse répond à votre besoin, votre vote nous encouragera.
Dans le cas ou la réponse mérite, à vos yeux, un , nous faire partager la raison de ce vote, pourrait nous permettre de nous améliorer.
jfontaine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 12h06   #5
Membre éprouvé
 
Homme Franck PRESSE
Inscription : août 2010
Messages : 202
Détails du profil
Informations personnelles :
Nom : Homme Franck PRESSE
Âge : 38
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : août 2010
Messages : 202
Points : 444
Points : 444
Bonjour à tous,
Une solution totalement différente serait peut être de passer par une variable tableau.
Code :
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!
__________________
Cordialement,
Franck P.


Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...
pijaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 13h16   #6
Membre chevronné
 
Avatar de defluc
 
Architecte
Inscription : mai 2002
Messages : 1 057
Détails du profil
Informations personnelles :
Âge : 62

Informations professionnelles :
Activité : Architecte

Informations forums :
Inscription : mai 2002
Messages : 1 057
Points : 745
Points : 745
Code :
Ligne = Application.Transpose(GestWbk.Sheets(1).Rows(j).Value)
génère l'erreur incompatibilité de type
defluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 13h39   #7
Membre éprouvé
 
Homme Franck PRESSE
Inscription : août 2010
Messages : 202
Détails du profil
Informations personnelles :
Nom : Homme Franck PRESSE
Âge : 38
Localisation : France, Nord (Nord Pas de Calais)

Informations forums :
Inscription : août 2010
Messages : 202
Points : 444
Points : 444
Citation:
Envoyé par defluc Voir le message
Code :
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
__________________
Cordialement,
Franck P.


Ps : n'oubliez pas de placer vos posts comme "résolus" () si tel est le cas...
pijaku est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h30.


 
 
 
 
Partenaires

Hébergement Web