BABUDROME
Messages postés151Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention19 avril 2016
-
10 avril 2016 à 16:18
BABUDROME
Messages postés151Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention19 avril 2016
-
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) '
' 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 10 avril 2016 à 18:26
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 :