Problème d'objet erreur 404

wil_2638 Messages postés 1 Statut Membre -  
 jacques -
Bonjours,
pour mon code ci-dessous j'ai un message d'erreur "erreur d'execution 424" objet requis
pour l'écriture de mon avant derniere ligne de code
"sheet1.Range("E5").Value = somme_usd"

Sub test()

Dim tableau As Variant
Dim i As Variant
Dim j As Variant
Dim somme_usd As Integer
Dim nb_usd As interger
Dim somme_usd_eur As Integer

somme = 0
nb_usd = 0

For i = 3 To 9

If (Range("C" & i).Value = "usd") And (Range("F" & i).Value = "bloqué") Then
nb_usd = nb_usd + 1
somme_usd = somme_usd + Range("d" & i).Value
'determiner les deux montants max et leur lignes et éqivalence en eu

End If

Next

'creer une fonction pour faire le change usd /eur
somme_usd_eur = (somme_usd * 0.89261)

MsgBox ("le nombre d'opé usd est égale à" & nb_usd)
MsgBox ("le somme opé usd est égale à" & somme_usd)

'placer la valeur de somme_usd dans la cellule E5 feuille1
sheet1.Range("E5").Value = somme_usd

End Sub

2 réponses

  1. jacques
     
    Essaye ce code VBA :

    
    Option Explicit
    
    
    Function EnEuros(mnt As Currency) As Currency
      EnEuros = mnt * 0.89261
    End Function
    
    
    Sub test()
    
      Dim nb_usd As Integer, mnt As Currency, maxusd As Currency
      Dim somme_usd As Currency, lig As Long, lig_maxusd As Long
    
      For lig = 3 To 9
        If Range("C" & lig) = "usd" And Range("F" & lig) = "bloqué" Then
          mnt = Val(Range("D" & lig))
          If mnt > 0 Then
            nb_usd = nb_usd + 1: somme_usd = somme_usd + mnt
            If mnt > maxusd Then maxusd = mnt: lig_maxusd = lig
          End If
        End If
      Next lig
      
      MsgBox "nombre opé usd : " & nb_usd & vbLf & vbLf _
        & "somme opé usd : " & somme_usd & vbLf _
        & "somme opé eur : " & EnEuros(somme_usd) & vbLf & vbLf _
        & "ligne " & lig_maxusd & " : maxusd = " & maxusd & vbLf _
        & "maxusd en eur : " & EnEuros(maxusd) & " €"
      
      Worksheets("Feuil1").[E5] = somme_usd
    
    End Sub
    
    

    Merci de me dire si ça te convient.
     
    0
    1. wil_2638
       
      bonjours Jacques

      Merci pour ton retour rapide
      je vais essayer ton code il est beaucoup plus élaborer que le mien
      mais j'ai trouvé mon erreur
      en faite la solution était Feuil1.range("E5").Value = somme_usd
      je devais écrire feuil1 au lieu de sheet1

      toutefois merci pour ton aide
      0
      1. jacques > wil_2638
         
         
        a) Tu peux écrire plus simplement : Feuil1.[E5] = somme_usd
            et ça fera la même chose : résultat identique.

        b) Dans mon code VBA, la sub test() se termine par :
            Worksheets("Feuil1").[E5] = somme_usd

        ⚠  J'espère que tu connais la différence entre ces 2 instructions !

        Ce n'est pas juste une autre façon d'écrire la même instruction :
        c'est très important, et ce n'est pas du tout la même chose !

        ----------------------------------------------

        L'instruction [Feuil1!E5] = somme_usd est synonyme de ma
        1ère instruction, donc elle aussi est différente de la tienne.

        Worksheets(1).[E5] = somme_usd est une instruction valide,
        qui peut avoir un résultat différent de nos 2 instructions.

        ----------------------------------------------

        Tu peux laisser ton instruction tel que, à condition de bien
        savoir ce que tu fais !  ;)
         
        0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour à tous les deux

    Essaies ceci pour la ligne "fautive"
    Sheets(1).Range("E5").Value = somme_usd

    Cdlmnt
    0
    1. wil_2638
       
      la solution était
      Feuil1.range("E5").Value = somme_usd

      Merci de ton aide
      0