Ajustement Automatique

bonjour à tous !

Je sollicite votre aide pour un petit problème sur excel (VBA) qui me prend la tête depuis plusieurs jours.

Je vous mets le code ci-dessous, cela sera directement plus parlant :

Sub Bouton_Ajuster()

    Dim dlg As Integer
    Dim w As Integer

    Sign = Range("N13")

    If Sign = 1 Then
        operateur = "+"
    ElseIf Sign = 2 Then
        operateur = "-"
    ElseIf Sign = 3 Then
        operateur = "/"
    ElseIf Sign = 4 Then
        operateur = "*"
    End If

 z = Worksheets("Feuil1").Boxajuster.Text
 w = Val(z2)

dlg = Range("J65536").End(xlUp).Row
For y = 2 To dlg
    Cells(y, 10) = "=" & Cells(y, 10) & operateur & w
    Next
End Sub

Je n'utilise aucune USERFORM

En gros, j'ai créé une liste déroulante classique de 4 lignes, qui renvoie dans la case N13 1,2,3 ou 4. En fonction de ça je sais si l'opérateur à sélectionner un + ou - ou / ou *.

J'utilise ensuite une TextBox du type Active X pour récupérer la valeur à ajuster. (Mon souci décrit plus bas est de gérer les nombres à virgule)

Ensuite je calcule le nombre de lignes rempli sur la colonne J que je mets dans la variable dlg.

J'utilise ensuite une boucle FOR enfin à juster chaque case de la colonne J une par une.

Mon souci est dans l'utilisation des nombres à virgule quand j''utilise des nombres entiers aucun problème.

Si je choisis un nombre à virgule, si j'ajuste une première fois, tout va bien, si j'ajuste une seconde fois là j'ai un message d'erreur.

Erreur 1004 - Erreur définie par l'application ou par objet.

Je suppose que mon erreur vient de ma conversation des variables, en effet une texte Box renvoie un STRING, et je pense que cela pose problème....

Merci d'avance pour vos réponses et votre Aide !!

Bonjour

Je ne comprends pas le pourquoi du Z2 dans votre code.

Sinon essayez comme ceci:

Sub Bouton_Ajuster()
Dim dlg As Integer, w As Integer, y As Integer
Select Case Range("N13")
    Case Is = 1: operateur = "+"
    Case Is = 2: operateur = "-"
    Case Is = 3: operateur = "/"
    Case Is = 4: operateur = "*"
End Select

Z = Worksheets("Feuil1").Boxajuster.Text
w = Val(z2)

dlg = Range("J65536").End(xlUp).Row
For y = 2 To dlg
    Cells(y, 10) = "=" & CDbl(Cells(y, 10)) & operateur & w
Next
End Sub

Possible de voir votre fichier ?

Cordialement

Bonjour !

Merci pour votre réponse !

Malheureusement cela ne fonctionne toujours pas... toujours la même erreur 1004.

j'avais déjà essayent différentes conversions en vain ....

D’ailleurs vous avez raison Z2 est une erreur :

w = Val(z)

c’était notamment une de mes tentatives de convertir les variables.

Je vous envoie mon fichier ça sera peut-être plus parlant.

cordialement

Re

Mon souci est dans l'utilisation des nombres à virgule quand j''utilise des nombres entiers aucun problème.

L'ajout de ce qui se trouve dans la box doit toujours se faire sur la partie entière je suppose ?

Re dan,

Dans ma textbox, l'utilisateur doit pouvoir saisir des nombres entiers comme des nombres à virgule.

Le code doit pouvoir gérer ces deux types de nombres...ce qui n'est pas encore le cas : !

Re

Ok mais mettons que vous avez en J2 le chiffre 51, et dans votre box le chiffre 1.25 et le signe +

En J2, vous voulez quoi comme résultat --> 52.25 ??

re !

Exactement ! et ainsi de suite avec les autres signes opérateur , si je choisis - alors le résultat sera 49.75 etc..!

Après quelques recherches c'est cette ligne de code qui me fait défaut :

Cells(y, 10) = "=" & (Cells(y, 10)) & operateur & w

Grosse erreur 1004. Pour les nombres entiers aucun souci, mais bug dès le passage en nombre à virgule.

re

Oui j'ai vu bien entendu.

Juste une question, pourquoi vous ne faites pas cela par Userform plutôt que de mettre un objet sur la feuille ?

Cordialement

Bonsoir Juulien, Dan,

Je propose :

Cells(y, 10).Formula = "=" & Replace$(Cells(y, 10), ",", ".") & operateur & Replace$(w, ",", ".")

Cordialement,

dhany

Rechercher des sujets similaires à "ajustement automatique"