Erreur 424 : objet requis alors que l'objet est bien initialisé Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
d
doraj
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 18 juillet 2018
Version d'Excel : 2010

Message par doraj » 18 juillet 2018, 15:34

Bonjour,
Je débute dans vba et je veux créer une macro qui copie des valeur d'une feuille A vers plusieurs feuilles, en les creant et en effectuant des calculs apres ( calcul simple: dans toutes les dates sans transactions, il prends la valeur précedente , sinon il somme avec la transaction à cette date).

Voici mon code:
Sub Macro1()
'
' Macro1 Macro
'

'
Dim i As Integer, trans As Integer, j As Integer
Dim prev_value As Long
Dim nom_feuille As String
'xlBook.Worksheets("Portefeuiles").Activate
Set Lafeuille = Worksheets("Portefeuilles")
'Sheets("Portefeuiles").Select
i = 2
nom_feuille = "feuille"
While Not IsEmpty(Lafeuille.Range("A" & i))
    If (nom_feuille <> Lafeuille.Range("A" & i).Value) Then
     
    
    nom_feuille = Lafeuille.Range("A" & i).Value
    
    
    Sheets("Feuil1").Select
    Sheets("Feuil1").Copy Before:=Sheets(1)
    Sheets("Feuil1 (2)").Select
    Sheets("Feuil1 (2)").Name = nom_feuille
    Range("A1:B1").Select
    Selection.Font.Bold = True


    Else
    If (nom_feuille = Lafeuille.Range("A" & i).Value) Then
     Set feuille_active = Worksheets(nom_feuille)
    
    k = 2
    While Not IsEmpty(feuille_active.Range("A" & k))

    trans = i - 1
    While Not IsEmpty(Lafeuille.Range("B" & trans))
            
        If (feuille_active.Range("A" & k) = Lafeuille.Range("B" & trans)) And (feuille_active.Range("B" & k) = Lafeuille.Range("C" & trans)) Then
            feuille_active.Range("C" & k).Value = Lafeuille.Range("E" & trans)
        End If
        trans = trans + 1
        k = k + 1
    Wend
    
Wend


j = 2
While Not IsEmpty(feuille_active.Range("A" & j))

    If feuille_active.Range("A" & j) <> feuille_active.Range("A" & j - 1) Then
        feuille_active.Range("C" & j) = 0
        Else
            feuille_active.Range("C" & j) = feuille_active.Range("C" & j) + feuille_active.Range("C" & j - 1)
        End If

    j = j + 1
Wend
    

End If
    End If
i = i + 1
Wend
End Sub

Merci pour votre aide
Modifié en dernier par doraj le 18 juillet 2018, 15:50, modifié 2 fois.
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 448
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 18 juillet 2018, 15:41

Bonjour,

Si tu disais sur quelle ligne est l'erreur ? :mrgreen:
d
doraj
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 18 juillet 2018
Version d'Excel : 2010

Message par doraj » 18 juillet 2018, 15:50

MFerrand a écrit :
18 juillet 2018, 15:41
Bonjour,

Si tu disais sur quelle ligne est l'erreur ? :mrgreen:
oui désolée, cest sur cette ligne: feuille_active.Range("C" & j) = feuille_active.Range("C" & j) + feuille_active.Range("C" & j - 1)
9eme ligne à partir du bas
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'171
Appréciations reçues : 448
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 18 juillet 2018, 16:52

Re,

Après indentation de ton code (illisible en l'état), je ne vois pas de raison apparente de l'erreur, surtout sur cette ligne !

Tu devrais cependant déclarer ta variable feuille_active As Range. Ne l'étant pas, elle est de type Variant. Théoriquement cela ne change rien, mais sait-on jamais ?
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message