Copie ligne via presse-papier [Résolu]

BABUDROME 151 Messages postés lundi 16 janvier 2006Date d'inscription 19 avril 2016 Dernière intervention - 10 avril 2016 à 16:18 - Dernière réponse : BABUDROME 151 Messages postés lundi 16 janvier 2006Date d'inscription 19 avril 2016 Dernière intervention
- 10 avril 2016 à 23:20
Bonjour,
J'ai obtenu une modèle via Enregistrement d'une macro :
Sub Copie_une_ligne()
'
' Copie_une_ligne Macro (obtenue via Enregistrer une macro)
'

'
Sheets("Rapport").Select

Range("A159:M159").Select
Application.CutCopyMode = False
Selection.Copy
Range("A181").Select
ActiveSheet.Paste

Range("A165:M165").Select
Application.CutCopyMode = False
Selection.Copy
Range("A182").Select
ActiveSheet.Paste

Range("A153:M153").Select
Application.CutCopyMode = False
Selection.Copy
Range("A183").Select
ActiveSheet.Paste

' Ajout de copie par saisie (modification de cette macro)
Dim Emet$, Recep$, e%, r%
r = 185

e = 133
r = r + 1
Emet = "A" + Trim(e) + ":M" + Trim(e)
Recep = "A" + Trim(r)
Range(Emet).Select
Application.CutCopyMode = False
Selection.Copy
Range(Recep).Select
ActiveSheet.Paste

e = 160
r = r + 1
Emet = "A" + Trim(e) + ":M" + Trim(e)
Recep = "A" + Trim(r)
Range(Emet).Select
Application.CutCopyMode = False
Selection.Copy
Range(Recep).Select
ActiveSheet.Paste

End Sub


Les instructions ajoutées sont bien prises en compte au lancement de la routine.
Quand j'écris la routine suivante dans un module de mon classeur, j'ai une erreur 1004 sur l'instruction 'Range(emet).select'. Pourquoi ?


Sub ReportLignes()
Dim i%, Emet$, Recep$, LigneTestée$, Valeur$, j%, k%
j = 180
Sheets("Rapport").Select
For i = 12 To 170 ' recherche lignes avec 1 en colonne I [dernier essai]
LigneTestée$ = "I" + Trim(i)
Valeur = Workbooks(NRapport).Worksheets(FRapport).Range(LigneTestée$).Value
If Valeur <> "0" Then
Emet = "A" + Trim(i) + ": M " + Trim(i)
Recep = "A" + Trim(j)
Range(Emet).Select
Application.CutCopyMode = False
Selection.Copy
Range(Recep).Select
ActiveSheet.Paste
j = j + 1
End If
Next i
End Sub


Puis-je être éclairé ?
Merci d'avance. bab
Afficher la suite 

2 réponses

Répondre au sujet
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 10 avril 2016 à 18:26
0
Utile
Bonjour,
I est un numérique ! Ne pas le "trimmer"
Ton "+" devant un numérique n'arrange rien et sème la confusion
La concaténation de chaînes de caractères se fait avec & et non + (même si VB se montre tolérant lorsque "harmonie" de types, ce qui n'est ici pas le cas)
Tu as inclus des espaces indus ===>> correction :
emet = "A" & i & ":M" & i
Range(emet).Select

Ceci étant dit pourquoi travailler à coups de select, copy, paste, etc ?
Travaille directement sur les objets Excel.
Exemple :
Worksheets("Feuil1").Range("A4:B6").Copy Destination:=Worksheets("Feuil7").Range("C10")

collera directement sur la feuille 2, à partir de sa cellule C10, tout le contenu de la plage A4:B6 de la feuille1
Commenter la réponse de ucfoutu
BABUDROME 151 Messages postés lundi 16 janvier 2006Date d'inscription 19 avril 2016 Dernière intervention - 10 avril 2016 à 23:20
0
Utile
Pb. résolu avec les corrections suggérées.

Encore Merci et A+ bab
Commenter la réponse de BABUDROME

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.