TextBox1.Value -> Erreur d'exécution '424': Objet Requis

Salut,

Quand je clique droit sur une cellule je peux changer le NumberFormat en CAD a USD et vice versa.

Quand la cellule sélectionné est CAD -> la cellule devient USD

Jusque la tout va bien, mais j'aimerais lui préciser le taux de change avec une TextBox1.Value

Voici le code

Public Sub mymacro1()

Dim formatcell As String

    If Selection.Column <> 6 Then MsgBox "Veuillez porter votre sélection sur la colonne F. Merci"

    If Selection.Column = 6 Then

    'On Error GoTo ErrorHandler
    formatcell = Selection.NumberFormat

    If formatcell = _
                        "_ * #,##0.00_) [$CAD]_ ;_ * (#,##0.00) [$CAD]_ ;_ * ""-""??_) [$CAD]_ ;_ @_ " Then

                                Selection.NumberFormat = _
                                "_ * #,##0.00_) [$USD]_ ;_ * (#,##0.00) [$USD]_ ;_ * ""-""??_) [$USD]_ ;_ @_ "
                                Selection.Offset(0, 1).NumberFormat = _
                                "_ * #,##0.00_) [$USD]_ ;_ * (#,##0.00) [$USD]_ ;_ * ""-""??_) [$USD]_ ;_ @_ "

                                '-----------------'
                                Selection.Offset(0, 25).Value = TextBox1.Value 'Selection.Offset(0, 24).Value = "USD"
                                '-----------------'

    End If

    If formatcell = _
                        "_ * #,##0.00_) [$USD]_ ;_ * (#,##0.00) [$USD]_ ;_ * ""-""??_) [$USD]_ ;_ @_ " Then

                                Selection.NumberFormat = _
                                "_ * #,##0.00_) [$CAD]_ ;_ * (#,##0.00) [$CAD]_ ;_ * ""-""??_) [$CAD]_ ;_ @_ "
                                Selection.Offset(0, 1).NumberFormat = _
                                "_ * #,##0.00_) [$CAD]_ ;_ * (#,##0.00) [$CAD]_ ;_ * ""-""??_) [$CAD]_ ;_ @_ "

    End If

   Exit Sub
'ErrorHandler:
'MsgBox "Vérifier que votre sélection ne comporte qu'un seul format. Merci"
   Resume Next
   End If

End Sub

J'ai donc une erreur vba me disant -> Erreur d'exécution '424': Objet Requis sur la ligne

Selection.Offset(0, 25).Value = TextBox1.Value

Quelqu'un peut m'aider s.v.p

Merci d'avance!

Bonjour jbeaudouin et

Je pense que tu n'as pas créé de Textbox1 sur ta feuille ou alors il ne porte pas se nom

@+

Salut Bruno,

Non je n'ai pas créer de Texbox1 sur la feuille!

Je commence en VBA..

Je regarde comment ça fonctionne et te reviens la dessus si j'ai des problèmes.

Merci!

Bon ce n'est pas d'une TextBox que je veux!

J'aimerais quand que je clique droit sur la cellule une fenêtre pop-up me demande quel valeur je veux.

Est-ce possible? Merci

Re,

Dans ce cas, il faut utiliser une InputBox

@+

Re,

Merci à toi, ça fonctionne!

Dim boxvalue As Variant

                                boxvalue = InputBox("Rentrer le taux de change actuel")
                                Selection.Offset(0, 25).Value = boxvalue

J'ai simplement rajouter ça au code.

Je veux mettre le sujet en Résolu mais je ne trouve pas comment ?

Bonjour à tous,

utilise plutôt

Application.InputBox("Taux de change", Type:=1)

qui permet de contrôler le type de saisie.
Ici seul un nombre est accepté.

Marquer en résolu sur fait le post avec la réponse qui te parait la plus correcte.
eric

Salut,

Ha ouais bien vue!

Quand j'aurai le temps il faudrait que je mettre des conditions dans le code, du genre:

Si < 1 ou > 2 

Message d'erreur ou quelque chose du genre..

Puis revenir à la InputBox...

Est-ce que vous pouvez m'éclairer là-dessus, avec un code que je peux adapter et/ou des exemples s.v.p?

Merci!

Ca me parait difficile de valider un taux à part contrôler si >0
Un taux <2 aujourd'hui, rien ne te dit qu'il le sera toujours dans 5 ans.

    Dim taux As Double
    Do
        taux = CDbl(Application.InputBox("Taux de change >0 ?", Type:=1))
    Loop Until taux > 0

Si ce n'est pas un taux que seul l'utilisateur connait (d'une date précise par exemple), il y a des techniques pour récupérer ceux du jour sur un site.
Tu peux faire une recherche en ce sens.
eric

Re,

Le taux actuel serait parfait!

A+

7cours-cad.xlsx (16.92 Ko)

Je ne suis pas un pro des interrogations web mais voici un exemple du cours du CAD en différentes monnaies.
Mis à jour à l'ouverture puis toutes les heures.

Le point de départ : choisir un site avec ce qui t'intéresse (j'ai pris https://www.boursorama.com/bourse/devises/taux-de-change-dollarcanadien-dollar-CAD-USD/ )
puis Données / Obtenir des données / A partir d'autres sources / A partir du web
eric

Re,

J'ai maintenant accès aux taux de change à partir de -> finance yahoo com / devisas

J'ai rajouté au code

Dim tauxchange As String

tauxchange = Worksheets("BD TAUX DE CHANGE").Range("B2").Value

Selection.Offset(0, 24).Value = tauxchange

Le taux de change s'affiche comme il faut dans la sheet "BD TAUX DE CHANGE" -> 1,3386

Mais une fois transférer elle s'affiche -> 13386 ???

Pas sur de comprendre pourquoi.. J'ai essayé d'autre format de cellule mais il ne prend pas en compte la virgule.

Pouvez-vous m'expliquer pourquoi svp!

Merci.

Edit:

tauxchange = Val(Replace(Worksheets("BD TAUX DE CHANGE").Range("B2").Value), ",", ".")

M'envoie comme erreur, par rapport à "Replace" -> argument non facultatif

Re,

Bon je sais pas si c'est propre comme solution mais ça fonctionne!

Dim tauxchange As String
Dim tauxchangereplace As String

tauxchange = Worksheets("BD TAUX DE CHANGE").Range("B2").Value
    tauxchangereplace = Replace(tauxchange, ",", ".")

Selection.Offset(0, 24).Value = tauxchangereplace

A+

Bonjour,

tout ne s'improvise pas non plus en programmation.
Tu devrais lire le cours VBA dans le menu en haut de cette page, en commençant par : 3. Les variables.
Parce que As String pour un nombre, on se demande pourquoi. C'est loin d'être le plus judicieux.
reic

Salut,

Ok merci je vais lire ça quand je vais avoir le temps à la job.

A+

Rechercher des sujets similaires à "textbox1 value erreur execution 424 objet requis"