probleme avec l'Editeur de macro excel 2003

goldfinger13

XLDnaute Occasionnel
bonsoir à tous,
j'ai besoin de votre aide. N'ayant pas beaucoup de connaissance en Vba j'ai utilisé l'éditeur de macro pour effectuer une tache répétitive. Mon problème est le suivant je travaille sur deux fichiers et le nombre de ligne à traiter est aléatoire or lors de l'enregistrement de la macro j'ai fait mon test sur 27 lignes . J'ai regardé dans la fenêtre de l’éditeur mais je ne sais pas par quoi remplacer "C1:C27" ou "D1:D27" afin que la macro se poursuive jusqu’à la dernière ligne non vide.

Code:
Sub Macro5()
'
' Macro5 Macro
' Macro enregistrée le 22/03/2011 par jl
'

'
    Columns("C:C").Select
    Selection.Insert Shift:=xlToRight
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-2],RC[-1])"
    Selection.AutoFill Destination:=Range("C1:C27")
    Range("C1:C27").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows("macrotest2.xls").Activate
    Columns("C:C").Select
    Application.CutCopyMode = False
    Selection.Insert Shift:=xlToRight
    Range("C1").Select
    ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-2],RC[-1])"
    Selection.AutoFill Destination:=Range("C1:C27")
    Range("C1:C27").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Windows("macrotest.xls").Activate
    Columns("D:D").Select
    Application.CutCopyMode = False
    Selection.Insert Shift:=xlToRight
    Range("D1").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],[macrotest2.xls]Feuil1!C3:C4,2,0)"
    Selection.AutoFill Destination:=Range("D1:D27")
    Range("D1:D27").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Columns("C:C").Select
    Application.CutCopyMode = False
    Selection.Delete Shift:=xlToLeft
End Sub
je joins les exemples de fichiers sur lesquels je dois travailler.

merci d'avance pour votre aide.
 

Pièces jointes

  • macrotest.zip
    11.1 KB · Affichages: 27
Dernière édition:

Softmama

XLDnaute Accro
Re : probleme avec l'Editeur de macro excel 2003

Bonjour,

J'ai pas ouvert ton fichier, mais logiquement, ceci devrait être équivalent à ce que tu as enregistré. Pour déterminer les dernières cellules des colonnes C et D, tu peux passer par des varialbles (appelées ici derlig et derlig2). Voici ce que ça donne, à tester :

VB:
Sub Macro5()
 Dim derLig As Long, derLig2 As Long
  derLig = [C65000].End(xlUp).Row
  derLig2 = [D65000].End(xlUp).Row
  Columns("C:C").Insert Shift:=xlToRight
  Range("C1").FormulaR1C1 = "=CONCATENATE(RC[-2],RC[-1])"
  Range("C1").AutoFill Destination:=Range("C1:C" & derLig)
  Range("C1:C" & derLig) = Range("C1:C" & derLig).Value
 Windows("macrotest2.xls").Activate
  Columns("C:C").Insert Shift:=xlToRight
  Range("C1").FormulaR1C1 = "=CONCATENATE(RC[-2],RC[-1])"
  Range("C1").AutoFill Destination:=Range("C1:C" & derLig)
  Range("C1:C" & derLig) = Range("C1:C" & derLig).Value
 Windows("macrotest.xls").Activate
  Columns("D").Insert Shift:=xlToRight
  Range("D1").FormulaR1C1 = "=VLOOKUP(RC[-1],[macrotest2.xls]Feuil1!C3:C4,2,0)"
  Range("D1").AutoFill Destination:=Range("D" & derLig2)
  Range("D" & derLig) = Range("D" & derLig).Value
  Columns("C:C").Delete Shift:=xlToLeft
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : probleme avec l'Editeur de macro excel 2003

Bonjour,

petite remarque au passage, dans un "autofill", la source doit être incluse dans la destination.
cf extrait de l'aide vba :
Destination Objet Range obligatoire. Les cellules à remplir. La destination doit inclure la plage source.

pas ouvert ton fichier, mais essaye peut être ainsi :
Code:
Range("D1").AutoFill Destination:=Range("D1:D" & derLig2)

bonne journée
@+
 

goldfinger13

XLDnaute Occasionnel
Re : probleme avec l'Editeur de macro excel 2003

Bonjour à toutes et à tous.

j'ai modifié la dernière partie de la macro comme ceci :

Code:
Windows("macrotest.xls").Activate
  Columns("D:D").Insert Shift:=xlToRight
  Range("D1").FormulaR1C1 = "=VLOOKUP(RC[-1],[macrotest2.xls]Feuil1!C3:C4,2,0)"
  Range("D1").AutoFill Destination:=Range("D1:D" & derLig2)
  Range("D1:D" & derLig2) = Range("D1:D" & derLig2).Value
  Columns("C:C").Delete Shift:=xlToLeft#
mais toujours un blocage au même endroit:

Code:
Range("D1").AutoFill Destination:=Range("D1:D" & derLig2)
avec le message erreur "1004" la méthode Autofill de la classe Range a échoué
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : probleme avec l'Editeur de macro excel 2003

Re,

ce code fonctionne chez moi :
Code:
Dim derLig2 As Long
Range("D1").Value = 123
derLig2 = 12
Range("D1").AutoFill Destination:=Range("D1:D" & derLig2)

que vaut "derLig2" lorsque l'erreur se produit ? ta variable est elle bien initialisée ?
 

Efgé

XLDnaute Barbatruc
Re : probleme avec l'Editeur de macro excel 2003

Bonjour à tous, au fil, au forum
Une proposition sans AutoFill:
VB:
Sub Macro5_2()
Dim derLig As Long, derLig2 As Long
derLig = [C65000].End(xlUp).Row
derLig2 = [D65000].End(xlUp).Row
Columns("C:C").Insert Shift:=xlToRight
With Range("C1:C" & derLig)
    .FormulaR1C1 = "=CONCATENATE(RC[-2],RC[-1])"
    .Value = .Value
End With
Windows("macrotest2.xls").Activate
Columns("C:C").Insert Shift:=xlToRight
With Range("C1:C" & derLig)
    .FormulaR1C1 = "=CONCATENATE(RC[-2],RC[-1])"
    .Value = .Value
End With
Windows("macrotest.xls").Activate
Columns("D").Insert Shift:=xlToRight
With Range("D1:D" & derLig2)
    .FormulaR1C1 = "=VLOOKUP(RC[-1],[macrotest2.xls]Feuil1!C3:C4,2,0)"
    .Value = .Value
End With
Columns("C:C").Delete Shift:=xlToLeft
End Sub
Cordialement
 
Dernière édition:

goldfinger13

XLDnaute Occasionnel
Re : probleme avec l'Editeur de macro excel 2003

@ Efgé: pas de bug sur ton code mais l'opération s'arrête après la Recherche V en D1 mais ne publie pas le résultat sur toute la colonne D

@Pierrot93: je ne sais pas ou écrire la dernière partie du code du tu as testé chez toi. doit elle remplacer:

Code:
derLig2 As Long
derLig2 = [D65000].End(xlUp).Row


en tout cas merci pour votre aide j’espère trouver car cela devrait me faire gagner beaucoup de temps
 

Pierrot93

XLDnaute Barbatruc
Re : probleme avec l'Editeur de macro excel 2003

Re,

en lieu et place de ton code "autofill"... la première ligne par contre, la déclaration de variable, est à placée sur la première ligne, après la déclaration de la procédure (private sub) :

Code:
Dim derLig2 As Long
derLig2 = [D65000].End(xlUp).Row
Range("D1").AutoFill Destination:=Range("D1:D" & derLig2)

bon après midi
@+
 

goldfinger13

XLDnaute Occasionnel
Re : probleme avec l'Editeur de macro excel 2003

Re bonsoir à tous,

Voilà j'ai résolu mon problème grâce à votre aide.
j'ai finalement opté pour la solution proposée par Efgé que j'ai modifié pour que la recherche V qui s'opère sur la colonne D s'effectue jusqu’à la dernière ligne non vide de la colonne C (et non de la colonne D en effet la macro s'executait sur la cellule D1 et s'arretait car c'était effectivement la dernière ligne vide de la colonne D.

Merci a vous tous pour votre aide précieuse je vais pouvoir poursuivre mon projet.

code modifié:
Code:
Sub Miseajour()
Dim derLig As Long
derLig = [C65000].End(xlUp).Row
Columns("C:C").Insert Shift:=xlToRight
With Range("C1:C" & derLig)
    .FormulaR1C1 = "=CONCATENATE(RC[-2],RC[-1])"
    .Value = .Value
End With
Windows("macrotest2.xls").Activate
Columns("C:C").Insert Shift:=xlToRight
With Range("C1:C" & derLig)
    .FormulaR1C1 = "=CONCATENATE(RC[-2],RC[-1])"
    .Value = .Value
End With
Windows("macrotest.xls").Activate
Columns("D:D").Insert Shift:=xlToRight
With Range("D1:D" & derLig)
    .FormulaR1C1 = "=VLOOKUP(RC[-1],[macrotest2.xls]Feuil1!C3:C4,2,0)"
    .Value = .Value
End With
Columns("C:C").Delete Shift:=xlToLeft
End Sub
 

Discussions similaires

Réponses
2
Affichages
179

Statistiques des forums

Discussions
312 763
Messages
2 091 835
Membres
105 076
dernier inscrit
simeand