Problème d'objet erreur 404

Fermé
wil_2638 Messages postés 1 Date d'inscription samedi 17 juin 2017 Statut Membre Dernière intervention 17 juin 2017 - 17 juin 2017 à 16:41
 jacques - 18 juin 2017 à 18:12
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
A voir également:

2 réponses

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
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
 
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
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 426
17 juin 2017 à 20:30
Bonjour à tous les deux

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

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

Merci de ton aide
0