Erreur depassement de capacité 6

bonjour,

je passe de Windows a MAC

et la j'ai ma macro qui me met cette erreur de dépassement de capacité (zero erreur sur windows)

alors en trainant sur le web j'ai testé toute les déclarations de variables

actuellement en long

ce que je ne comprend pas c'est que quand je debogue

ma variable est bien incrémenté, le calcul est ok

et si je force en rappuyant sur "play", sa passe.. il fini la macro en entier et tout est bien rentrée dans mon classeur

voici la ligne qui pose probleme

acompteClient = prixSeance * (30 / 100)

Bonjour et bienvenue,

Pourriez-vous partager le classeur et le code macro correspondants ? Il y a peut etre un problème de code car pour dépasser la valeur d'un Long (9e18) il est probable qu'il y ait une erreur quelque part…

Pour info les Long sont des entiers donc y attribuer une valeur *0,3 c'est pas une bonne idée non plus.

le classeur je peux pas car c'est toute ma comptabilité d entreprise

Edit modo

Le code dans le fichier joint -

7code.txt (12.27 Ko)

Utilisez le bouton </> pour poster du code svp. C'est plus lisible.

En changeant les Dim en haut du sub comme ceci, avez-vous toujours une erreur ?

Dim CheminDossier As String
Dim derniereLigne As String
Dim numDossier As String
Dim nomClient As String
Dim prenomClient As String
Dim acompteClient As Double
Dim prixSeance As Double
Dim soldeClient As Double
Dim seanceClient As String
Dim nomFournisseur As String
Dim nomAchat As String
Dim tarifAchat As Double
Dim paiementAchat As String
Dim Dateshooting As Date
Dim Heureshooting As String
Dim tailleTableau As String
Dim PrixTableauFournisseur As Double
'Dim genreClient As String
'Dim reponseAcompte As String
'Dim reponseCarteCadeau As String
Dim numderniereCarte As String

oui

il s'arrete toujours sur cette ligne

et si je force il continu comme si de rien n etait ....

J'avoue que je ne sais pas trop alors… Je veux dire sans MacOS (et sans fichier) je ne pourrais pas vous aider davantage malheureusement. Attendons, si @Dan passe par là.

C'est vraiment étrange que ça s'arrête, mais reprenne si vous réappuyez sur "play".

Dans le debugger/explorateur de variables lors de l'arrêt, quelles sont les valeurs de acompteClient et prixSeance ?

Si jamais, on pourra toujours utiliser "On Error Resume Next" pour encadrer ce petit bout de bloc, mais il serait bon de savoir pourquoi il plante.

alors si je met un prix de seance quand il est bloqué sur l erreur

le prix de seance lui est ok

acompteClient est à 0

et quand je force il fait bien le calcule et acompteClient est bien a 30% du prix de séance

Bon bah écoutez je n'ai aucune idée…

Mettez

On Error Resume Next
acompteClient = prixSeance * (30 / 100)
On Error Goto 0

Pour sautez l'erreur, mais c'est quand même sacrément étrange… N'oubliez pas de laisser les déclarations de variables comme je vous l'ai mis dans mon précédent message, c'est le + correct dans votre cas normalement.

oupss

du coup il met mon acompte à 0 ^^

Je viens de repartir sur mon pc windows, ca marche niquel

je reprend le fichier d origine sans les changements qu'on.a fait, je le remet sur MAC et la dès le début il me remet une erreur de dépassement de capacité sur le premier vbyesno

et si j efface la declaration de la variable vbyesno il passe à la suite....

franchement je ne comprend pas, apparement c'est la variable qui l’embête mais pourquoi que sur MAC

je regrettre mon passage sur MAC ...

Bonsoir,

En gardant vos déclaration d'origine, essayez peut-être :

acompteClient = CLng(prixSeance * 30 / 100)

Bonjour,

Saboh12617 m'a contacté afin que je jette un oeil sur votre souci

J'ai remis votre code dans un fichier texte car trop long et là cela devient illisible. Comme il vous l'a dit, pensez aussi à mettre votre code entre balises en cliquant sur l'icone </> disponible dans la barre de menu


Quelle est exactement votre version MAC ?

Dépassement de capacité est dû à une mauvaise déclaration de variable. Puis sur quelle ligne s'arrête de le code ?

NB : Sur la première ligne, la variable DossierType n'est pas déclarée. C'est de cela dont vous parlez ?

On peut y aller pas à pas
Au début du code remplacez déjà :

DossierType = MsgBox("Est-ce une formation ?", vbYesNo)

If DossierType = vbNo Then

Worksheets("listes des factures").Select
derniereLigne = Range("B" & Rows.Count).End(xlUp).Row
numDossier = Range("B" & derniereLigne).Value
numDossier = Right(numDossier, 3)
numDossier = numDossier + 1
numDossier = "C" & numDossier
derniereLigne = derniereLigne + 1

par ceci

If MsgBox("Est-ce une formation ?", vbYesNo) = vbNo Then
    With Worksheets("listes des factures")
        derniereLigne = .Range("B" & Rows.Count).End(xlUp).Row
        numDossier = "C" & Right(.Range("B" & derniereLigne) + 3) + 1
        derniereLigne = derniereLigne + 1
    End With

Donc là on supprime la variable dossiertype

non toujours en erreur :(

sur quelle ligne ?

Edit : ok je viens de voir dans votre premier post --> acompteClient = prixSeance * (30 / 100)

Vous pouvez donner le nombre que vous utilisez pour prixSeance ?

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

Votre code est trop long tout simplement

Il vaut mieux de petit code qu'un trop long où l'on se perd dans la compréhension

Je regarde aussi de ce coté à moins que cela ne vous intéresse pas.

Dim CheminDossier As String
Dim derniereLigne As String
Dim numDossier As String
Dim nomClient As String
Dim prenomClient As String
Dim acompteClient As Variant
Dim soldeClient As Single
Dim seanceClient As String
Dim nomFournisseur As String
Dim nomAchat As String
Dim tarifAchat As Single
Dim paiementAchat As String
Dim Dateshooting As Date
Dim Heureshooting As String
Dim tailleTableau As String
Dim PrixTableauFournisseur As Single
Dim genreClient As Variant
Dim reponseAcompte As Variant
Dim reponseCarteCadeau As Variant
Dim numderniereCarte As String

Sub Nouveau_Client()

DossierType = MsgBox("Est-ce une formation ?", vbYesNo)

If DossierType = vbNo Then

            Worksheets("listes des factures").Select
            derniereLigne = Range("B" & Rows.Count).End(xlUp).Row
            numDossier = Range("B" & derniereLigne).Value
            numDossier = Right(numDossier, 3)
            numDossier = numDossier + 1
            numDossier = "C" & numDossier
            derniereLigne = derniereLigne + 1

            Dateshooting = InputBox("Quel est la date du shooting ?", "Date")

            genreClient = MsgBox("Le client est-il une femme ?", vbYesNo)
            If genreClient = vbYes Then
                genreClient = "Madame"
                Else
                genreClient = "Monsieur"
            End If

            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")

            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
 acompteClient = CLng(PrixSeance * (30 / 100))

c'est sur cette ligne qui fait l'erreur

Prixseance à quelle valeur ?
Les décimales sont faites avec point ou virgule ?

prix de seance toujours entier genre

129

99

50

Bonsoir à tous !

un essai juste pour voir : Range("B" & derniereLigne).Value = Evaluate(PrixSeance * 0.3)

@ bientôt

LouReeD

Rechercher des sujets similaires à "erreur depassement capacite"