Vba problème d'arrondi avec multiples

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Arpette

XLDnaute Impliqué
Bonsoir à toutes et tous, je souhaiterais arrondir le résulat en fonction d'un multiple. Pour produits "A,B,C" je souhaite avoir le résultat en colonne E des multiples de 25 et pour le produit "D" des multiples de 21.
Excusez moi pour mon code, je pense qu'il n'est pas très bien structuré.

Merci pour votre aide.

Code:
With Sheets("Alimentation")
    'Pour faire les sorties, on mémorise dans DernLign le numéro de la première ligne de la feuille Alimentation
    dernLign = .Cells(.Rows.Count, 1).End(xlUp).Row
    
    If TextBox8.Value = "" Then
       TextBox8.Text = 0
    End If
    Cells(2, 12) = TextBox8.Text
       If .Cells(dernLign, 2) = "A" Or .Cells(dernLign, 2) = "B" Or .Cells(dernLign, 2) = "C" Then
            .Cells(dernLign, 5).Value = NB * Cells(2, 12) / 1000
       
            If NB * Cells(2, 12) / 1000 = 0 Then
                .Cells(dernLign, 5).Value = 0
            End If
                If NB * Cells(2, 12) / 1000 <> 0 Then
                    .Cells(dernLign, 5).Value = 25 ' Ici je souhaite avoir des multiples de 25
                End If
       End If
        
        If .Cells(dernLign, 2) = "D" Then
            .Cells(dernLign, 5).Value = NB * Cells(2, 12) / 1000
        
            If NB * Cells(2, 12) / 1000 = 0 Then
                .Cells(dernLign, 5).Value = 0
            End If
                If NB * Cells(2, 12) / 1000 <> 0 Then
                    .Cells(dernLign, 5).Value = 21 ' Ici je souhaite des multiples de 21
                End If
        End If
 
Re : Vba problème d'arrondi avec multiples

Bonjour le fil, Arpette

Quelques remarques sur le code qui pourront peut-être t'aider:

- Sachant qu'un TextBox contient une chaine de caractère (du texte),
- que TextBox.Value est équivalent à TextBox.Text
- et que la valeur par défaut d'un TextBox est la propriété Text, tu peux écrire
Code:
If TextBox8 = "" Then TextBox8 = "0"
- Maintenant imaginons que du fait d'une faute de frappe,
il y a un caractère non numérique dans le TextBox.
Dans ce cas, lorsque l'on essaiera de faire un calcul, il se produira une erreur.
D'ou la ligne suivante qui sort de la Sub
Code:
If Not IsNumeric(TextBox1) Then Exit Sub
- Puisque tu veux faire un calcul avec la cellule Cells(2, 12),
il est préférable de convertir le texte de TextBox8 en un nombre (ici Double)
Code:
 Cells(2, 12) = CDbl(TextBox8)
- Enfin tu peux remplacer les 18 lignes de test par les suivantes:
- Sachant que .Cells(dernLign, 2) ne doit contenir qu'un seul caractère en majuscule, compris entre "A" et "D",
tu peux utiliser le code ASCII du Caractère
Code:
If Len(Trim(.Cells(dernLign, 2))) = 1 Then X = Asc(UCase(Trim(.Cells(dernLign, 2))))
- Sachant que Asc("A") = 65 et Asc("D") = 68,
tes tests deviennent
Code:
If X >= 65 And X <= 68 Then
  X = IIf(X = 68, 21, 25)
  .Cells(dernLign, 5) = IIf(NB * Cells(2, 12) / 1000, X, 0)
End If
A plus
 

Pièces jointes

Re : Vba problème d'arrondi avec multiples

Bonsoir Arpette, soenda, et à ceux qui passeront par ici,

Je ne réponds que sur la recherche des multiples.
Au cas où cela puisse servir:

Un exemple joint.
(Ne pas oublier le "CDbl" pour le TextBox)

Amicalement

Yann
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
474
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
176
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
497
Réponses
7
Affichages
252
Réponses
3
Affichages
300
Réponses
2
Affichages
517
Retour