VBA (error#1004) : boucle sur copie-colle (ie : DoWhile...+ autofill ou .formula)

zebanx

XLDnaute Accro
Bonjour,

Il y a un problème de code (erreur 1004) dans deux macros qui servent à dupliquer une formule sur un rows.count avec un démarrage à une ligne i non figée.

En cherchant sur le site, il y aurait deux formules de codes qui pourraient convenir :

- autofill avec le code suivant

Sub DWL_autofill()
' Utilisation .AUTOFILL
Dim lignedeb As Long
Dim i As Integer
If IsEmpty(Range("B1")) = True Then
i = lignedeb
Else
i = 1
End If
Do While Cells(i, 2) <> ""
'erreur 1004
Range("C" & i).Select
Selection.AutoFill Destination:=Range("C" & i & "C" & Range("B" & Rows.Count).End(xlUp).Row)
i = i + 1
Loop
Range("A1").Select
End Sub

- .formula, qui parait plus rapide, avec le code suivant
Sub DWL_formula()
' Utilisation .FORMULA
Dim lignedeb As Long
Dim i As Integer
If IsEmpty(Range("B1")) = True Then
i = lignedeb
Else
i = 1
End If
Range("C" & i & "C" & Cells(Rows.Count, 4).End(xlUp).Row).Formula1 = "=+RC[-1]+100"
'erreur 1004
Selection.Columns.AutoFit
Cells("C1").Select
End Sub

Pourriez-vous s'il vous plait corriger ces deux codes qui me permettraient aussi de continuer à apprendre sur les boucles simples ?
Ci-joint le fichier, toutes les macros sont dans le module 1.

Vous en remerciant par avance, bonne journée
thierry
 

Pièces jointes

  • Boucle DoWhile (autofill et formula).zip
    13.5 KB · Affichages: 33

Lone-wolf

XLDnaute Barbatruc
Bonjour Thierry

Pas besoin de boucle.

VB:
Option Explicit

Sub test()
Dim derlig As Long

    Application.ScreenUpdating = False

    With Feuil1
        derlig = .Range("a" & Rows.Count).End(xlUp).Row
        .Range("c2").Formula1 = "=+RC[-1]+100"
        .Range("c2").AutoFill .Range("c2:c" & derlig)
        With .Range("c2:c" & derlig)
            .Value = .Value
        End With
    End With
End Sub
 
Dernière édition:

zebanx

XLDnaute Accro
Bonjour Pierre-Jean et bonjour Lone-Wolf

Merci pour votre célérité et les codes proposés

@Lone-wolf
Merci pour l'explication et sur les deux réponses, effectivement la boucle a sauté (tant mieux!!)
Il y a cependant une erreur #438 à l 'exécution de la macro.
--> J'ai remis les informations pour que la cellule C2 soit activée avec la formule à recopier et modifié derligne avec la colonne B qui contient le nombre exact de ligne à incrémenter mais ça n'a pas suffit...:(

@Pierre-Jean
Les deux codes fonctionnent bien. Merci de les avoir corrigés sur VBE et d'avoir laissé les anciennes lignes à supprimer, c'est plus facile pour comprendre d'où viennent les erreurs. :cool:

Bonne journée à tous les deux
 

Discussions similaires

Réponses
6
Affichages
227

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali