Erreur depassement de capacité 6

j'ai remis ma version du msgbox sinon il faisait des la premier ligne une erreur de compilation....

Heu oui normal car au début dans le ligne Right j'ai mis + 3. Il faut remplacer le + par une virgule
Donc la ligne comme ceci

numDossier = "C" & Right(.Range("B" & derniereLigne), 3) + 1

Pour l'erreur essayez en changeant cette ligne -->

prixSeance = Application.InputBox("Quel est le Prix de la séance ?", "Tarif", Type:=1)

LouReed , il arrondi la valeur de l'acompte mais il remplit de nouveau le fichier sans erreur avec la valeur arrondie

Dan

non toujours l'erreur

alors un =CDbl(PrixSeance * 0.3) peut-être, ou bien modifier le format de la cellule afin d'afficher les décimales...

@ bientôt

LouReeD

Pas facile sans voir le fichier mais bon

Mettez ce code dans un autre module pour voir ce que cela vous renvoie

Sub test()
prixSeance = Application.InputBox("Quel est le Prix de la séance ?", "Tarif", Type:=1)
acompteClient = prixSeance * (30 / 100)
Msgbox acompteclient
End Sub

LouReed

voici ce que j'ai mit

reponseAcompte = MsgBox("Y-a-til un acompte ?", vbYesNo)
                If reponseAcompte = vbYes Then
                Range("AB" & derniereLigne).Value = CDbl(PrixSeance * 0.3)
                    'acompteClient = PrixSeance * (30 / 100)
                    'Range("AB" & derniereLigne).Value = acompteClient
                    acompteClient = Range("AB" & derniereLigne).Value
                    soldeClient = PrixSeance - acompteClient
                    Range("AF" & derniereLigne).Value = soldeClient

du coup il s'arrete sur la ligne

Range("AB" & derniereLigne).Value = CDbl(PrixSeance * 0.3)

erreur de dépassement et qd je degogue, je demande la ligne suivante et sa passe et il rempli le tableau avec les bonnes valeurs, mais il s arrête et bug qd meme sur la ligne ...

DAN

si je met 129

il me renvoi sans erreur 38,7

Ok donc l'erreur vient de votre code

essayez le même code mais en choisissant une ligne libre
Sub test()
derniereligne = 100
prixSeance = Application.InputBox("Quel est le Prix de la séance ?", "Tarif", Type:=1)
acompteClient = prixSeance * (30 / 100)
Range("AB" & derniereLigne).Value
End Sub

J'ai utilisé la ligne 100 en colonne AB
Voyez si elle est libre avant d'exécuter le code

DAN sa marche le sub test

Ok donc c'est votre code qui est à revoir.
Quel est le nom de la feuille sur laquelle vous devez mettre l'info d'acompte ?

Du coup j'ai changé ca

            nomClient = InputBox("Quel est le nom du client ?", "Nom Client")
            prenomClient = InputBox("Quel est le nom du Prénom ?", "Nom Client")

            seanceClient = InputBox("Quel est le type de séance ?", "Séance")
            'prixSeance = InputBox("Quel est le Prix de la séance ?", "Tarif")

            prixSeance = Application.InputBox("Quel est le Prix de la séance ?", "Tarif", Type:=1)
            acompteClient = prixSeance * (30 / 100)

            reponseAcompte = MsgBox("Y-a-til un acompte ?", vbYesNo)
                If reponseAcompte = vbYes Then
                    'acompteClient = CLng(prixSeance * (30 / 100))
                    Range("AB" & derniereLigne).Value = acompteClient
                    soldeClient = prixSeance - acompteClient
                    Range("AF" & derniereLigne).Value = soldeClient
                Else
                    acompteClient = 0
                    Range("AB" & derniereLigne).Value = acompteClient
                    soldeClient = prixSeance
                    Range("AF" & derniereLigne).Value = soldeClient
                End If

et ca fonctionne, je comprend pas pourquoi mais sa marche ...

prixSeance = InputBox("Quel est le Prix de la séance ?", "Tarif")

Cette ligne vous renvoie votre nombre en format Texte

prixSeance = Application.InputBox("Quel est le Prix de la séance ?", "Tarif", Type:=1)

Cette ligne ci vous renvoie votre nombre en variable type Variant. Le fait de mettre Type =1 vous oblige à mettre un nombre
Vous auriez peut être intérêt aussi à remplacer "Dim acompteClient As Long" par "Dim acompteClient As Double"


Sinon je peux balayer votre code pour simplifier un peu et éviter les Select qui ne jamais bon avec VBA

A vous de voir si je me penche sur le sujet

Mais DAN pourquoi sur windows ca passe depuis des mois et la MAC sa passe pas ^^ ?

Ben je vais essayer de changer des inputBox en Application.InputBox

Avec MAC il faut parfois être plus précis car sous Windows cela laisse passer les "crasses" quelques fois

Ben je vais essayer de changer des inputBox en Application.InputBox

Heu non parce que si cela doit vous renvoyer du texte vous pouvez le laisser tel quel

Essayez plutôt de :
- répartir sur plusieurs macros plutôt que sur une seule. C'est plus lisible
- enlever les Select

je vous ai donné quelques lignes au début du fil. Vous pouvez les utiliser, cela ne renvoie pas d'erreur

sa marche je touche plus

par contre tu vois si je met le prix Seance au dessus et le acompteClient dans le SI

sa marche pas

bref je vais arreter de me prendre la tête

un grand merci a vous tous pour votre aide

derniere question ^^

quand je fais un msgbox, vbyesno, c'est possible de mettre par defaut le choix non ?

pour pouvoir enchainer la touche entrer sans reprendre la souris ?

par contre tu vois si je met le prix Seance au dessus et le acompteClient dans le SI

heu je ne vois pas pourquoi mais bon, mettez les deux dans le SI
Pourquoi vous voulez faire autrement puisque l'acompte est à 0 en de choix NON

quand je fais un msgbox, vbyesno, c'est possible de mettre par defaut le choix non ?

oui comme ceci

MsgBox("Est-ce une formation ?", vbYesNo + vbDefaultButton2)

MERCIiiiiiiiii beaucoup

Rechercher des sujets similaires à "erreur depassement capacite"