IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Problème de collage des données sur une plage : erreur d'exécution 13 [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 580
    Par défaut Problème de collage des données sur une plage : erreur d'exécution 13
    Bonjour
    Je viens ce matin vous solliciter de l'aide.
    En effet, j'ai un fichier qui me permet de gérer la facturation de mon restaurant depuis 2020.
    Depuis le mardi, nous rencontrons un problème avec le même fichier qui n'a pas été modifié.
    Je signale aussi que nous n'avons pas changé de version windows ou office.
    Voici le problème;
    lorsqu'on lance l'usf, on renseigne le mdp (DAN), on choisi le serveur(test1 ou test2), lorsqu'on fini de renseigner les éléments de la commande et qu'on valide par la commande "VALIDER", on reçoit le message d'erreur suivant : erreur d'exécition "13" , incompatibilité de type.
    Il faut noter que la validation de la commande entraine la copie des données vers la feuille "ETAT_VENTE" et le débogage souligne la ligne de ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("d" & ligExport) = CDbl(Me.Controls("TextBox_Mtant" & I))
    Pour les besoins de teste, je vous partage le lien du fichier:
    https://www.transfernow.net/dl/202602138hWkGM2V

    ci-dessous le code intégral pour appréciation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub Etat_Vente()
    Dim ligExport As Long
    Dim I As Integer
     
    'Ce code permet d'alimenter la feuil ETAT_VENTE
    ligExport = Feuil2.Range("f" & Rows.Count).End(xlUp).Row + 1
     
    'Affectation de la cellule contanant le numéro de facture à incrémenter
     
    If Me.TextBox_Réf <> "" Then
        For I = 1 To 10 'pour toutes les lignes
            If Me.Controls("ComboBox_Bois" & I) <> "" And Me.Controls("TextBox_Qte" & I) <> "" Then  'si tous les contrôles de la ligne sont remplis
     
                'export
                With Feuil2
                    .Unprotect "zzzzz"
                    .Range("a" & ligExport) = Date - IIf(Hour(Now) < 6, 1, 0)
                    .Range("b" & ligExport) = Me.Controls("ComboBox_Bois" & I)
                    .Range("c" & ligExport) = CDbl(Me.Controls("TextBox_Qte" & I))
                    .Range("d" & ligExport) = CDbl(Me.Controls("TextBox_Mtant" & I))
                    .Range("e" & ligExport) = Me.Serveur
                    .Range("f" & ligExport) = Me.TextBox_Réf
                    .Range("g" & ligExport) = Me.CodeExpl
                    .Range("h" & ligExport) = CDbl(Val(Me.TextBox_Encais))
                    .Range("i" & ligExport) = CDbl(Val(Me.TextBox_Reste))
                    .Range("j" & ligExport) = CDbl(Val(Me.TextBox_Avoir))
                    .Range("k" & ligExport) = Format(Now(), "hh:mm")
                    .Range("o" & ligExport) = CDbl(Me.Controls("TextBox_PV" & I))
                End With
     
                'incrémentation de la ligne
                ligExport = ligExport + 1
            End If
        Next I
    End If
    'Feuil2.Protect "zzzzz"
     
    End Sub
    Bonne te heureuse année 2026

  2. #2
    Invité de passage
    Homme Profil pro
         ​​​  
    Inscrit en
    Décembre 2025
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité :      ​​​  

    Informations forums :
    Inscription : Décembre 2025
    Messages : 21
    Par défaut
    Je ne suis pas sur mais les prix sont formatés avec le séparateur millier du genre 6 600
    ajouter Val
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("d" & ligExport) =  CDbl(Val(Me.Controls("TextBox_Mtant" & I)))

  3. #3
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 492
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 492
    Par défaut
    Hello,

    je pense que Informt2025 à raison, ou alors les séparateurs de millier et/ou décimal ont changés.

    Je voudrais aussi vous signaler qu'il y a pas mal d'erreur dans les macros.
    Bien qu'il y ait la commande "Option Explicit" au début du module il y a des variables non déclarées et des noms de feuille fausses.
    Lancer une compilation pour vous en apercevoir (Déboguage, Compiler VBAproject)

    Dans Sub Vider_USF il est noté With Feuil13 mais celle ci n'existe pas/plus

    un truc qui fonctionne mais qui est bizarre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            For I = 1 To 10
                .Controls("Combobox_bois" & I) = ""
                .Controls("Textbox_Qte" & I) = ""
                .Controls("TextBox_PV" & I) = ""
                .Controls("TextBox_Mtant" & I) = ""
                .TextBox_Réf = ""
                .Serveur = ""
                .TextBox_Encais = ""
                .TextBox_Avoir = ""
                .TextBox_Reste = ""
            Next I
    devrait être défini comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
            For I = 1 To 10
                .Controls("Combobox_bois" & I) = ""
                .Controls("Textbox_Qte" & I) = ""
                .Controls("TextBox_PV" & I) = ""
                .Controls("TextBox_Mtant" & I) = ""
            Next I
            .TextBox_Réf = ""
            .Serveur = ""
            .TextBox_Encais = ""
            .TextBox_Avoir = ""
            .TextBox_Reste = ""
    pas besoin de vider 10 fois les noms simples
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  4. #4
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 580
    Par défaut
    Bonsoir Informat2025, Nain porte koi
    Informat2025: merci pour votre solution qui fonctionne bien.
    Je remercie également Nain porte koi pour ses solutions que j'ai aussi appréciées.
    J'ai omis de signaler que lorsque je renseigne le montant de l'encaissement dans le textbox "TextBox_Encais", il y'a chamboullement.
    Autrement dit, le montant saisi change de valeur et cela n'a rien a voir avec le montant encaissé que le caissier souhaitait saisir.
    Merci de m'aider à lever cette préoccupation.

    Encore merci pour tout

  5. #5
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 492
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 492
    Par défaut
    le montant saisi change de valeur et cela n'a rien a voir avec le montant encaissé
    Ca change dans quelle proportion ?
    Si le caissier saisie 123 et que vous retrouver 456 là y'a un gros problème, mais si c'est 10 000 et que vous retrouver 10 ou 100 y'a déjà une certaine logique

    Vous êtes sûr de ne pas avoir touché aux séparateurs de millier et/ou décimal ?
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  6. #6
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 580
    Par défaut
    Bonsoir Nain porte koi
    Je crois avoir compris.
    voici le code qui initial qui créait le bug:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox_Encais = Format(TextBox_Encais, "# ##0")
    voici le code corrigé tenant compte des acquits du coaching reçu aujourd'hui qui fonctionne bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox_Encais = Format(Val(TextBox_Encais), "# ##0")
    J'espère que ma logique ne vas pas me rattraper

    Encore merci

  7. #7
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 492
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 492
    Par défaut
    Le problème que vous allez générer ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox_Encais = Format(Val(TextBox_Encais), "# ##0")
    c'est que ça n'est plus une valeur mais un texte, vous ne pourrez donc plus faire de calcul sur TextBox_Encais
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  8. #8
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 541
    Par défaut
    Bonjour à tous,
    Ha ces mise en formes et conversions....
    Si nous regardons le code sur la méthode Change de la zone de texte TextBox_Encais nous voyons cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub TextBox_Encais_Change()
        If TextBox_Total.Value > 0 Then
            TextBox_Reste = Val(TextBox_Encais.Value) - Val(TextBox_Total.Value)
            TextBox_Reste = Format$(TextBox_Reste, "# ##0")
            TextBox_Encais = Format$(TextBox_Encais, "# ##0")
        ElseIf TextBox_Total.Value < 0 Then
            TextBox_Reste = Val(TextBox_Encais.Value) + Val(TextBox_Total.Value)
            TextBox_Reste = Format$(TextBox_Reste, "# ##0")
            TextBox_Encais = Format$(TextBox_Encais, "# ##0")
        End If
    End Sub
    D'abords un peu de lecture concernant la fonction Val().
    Si l'utilisateur entre un chiffre avec une virgule, la fonction Val ne va récupérer que la partie avant la virgule, ce qui aura pour effet de changer le résultat des calculs.
    Il faut donc remplacer la virgule par un point et pour cela une petite fonction fera le travail, tout en laissant le visuel aux format Français.
    Si vous voulez l'utiliser sur plusieurs formulaires mettez-la dans un module déclarée en Public. Si juste besoin sur le formulaire Facturier_Caisse Alors la mettre dans le module du formulaire et déclarée en Private.
    Par contre il faudra changer tous vos appels....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Public Function TextToDouble(Txt As String) As Double
        Dim CleanVal As String
     
        ' // Supprime les espaces (standards et insécables)
        CleanVal = Replace(Txt, " ", "")
        CleanVal = Replace(CleanVal, Chr(160), "") ' Espace insécable souvent utilisé dans Excel
     
        ' // Harmonise le séparateur décimal (tout en point pour Val)
        CleanVal = Replace(CleanVal, ",", ".")
     
        ' // Conversion sécurisée
        If IsNumeric(CleanVal) Then
            ' Val() est robuste mais CDbl() respecte mieux les grands nombres
            ' Ici, on utilise Val car on a forcé le point
            TextToDouble = Val(CleanVal)
        Else
            TextToDouble = 0
        End If
    End Function
    Et pour l'appel cela donnerait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub TextBox_Encais_Change()
        With TextBox_Reste
            If TextBox_Total.Value > 0 Then
                .Value = TextToDouble(TextBox_Encais.Value) - TextToDouble(TextBox_Total.Value)
                .Value = Format$(.Value, "# ##0")
                TextBox_Encais.Value = Format$(TextBox_Encais, "# ##0")
            ElseIf TextBox_Total.Value < 0 Then
                .Value = TextToDouble(TextBox_Encais.Value) + TextToDouble(TextBox_Total.Value)
                .Value = Format$(.Value, "# ##0")
                TextBox_Encais.Value = Format$(TextBox_Encais.Value, "# ##0")
            End If
        End With
    End Sub
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en :resolu: Vous avez aimé la discussion alors un :plusser: fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  9. #9
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 410
    Billets dans le blog
    3
    Par défaut
    Bonjour,

    J'ai pas tout suivi la discussion, mais de mon expérience, tout ce qui est en VBA doit être au format américain (ou en tout cas dans la plupart des cas, c'est tordu donc il y aura surement une exception quelque part)

    par exemple, si je veux qu'il m'affiche un nombre au format 1 523,40 dans une msgbox, je ferais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub test()
    Dim Nb As Double
        Nb = 1523.4
        MsgBox Format(Nb, "#,##0.00")
    End Sub
    Donc utiliser les séparateurs américains dans le format entre guillemets, qui seront traduits automatiquement aux formats locaux en passant à Excel
    Je sais pas si ça aide ou si je suis à coté de la plaque

  10. #10
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 580
    Par défaut
    Bonsoir
    je remercie les nouveaux intervenants avec leurs riches contributions.
    @Valtrase : je voulais vous apporter cette petite précision : en effet, dans nos saisies, les virgules n'interviennent pas. Est-ce votre solution tient toujours avec cette donne ou je pourrai conserver le code ci-dessous en l'état sans problème?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub TextBox_Encais_Change()
        If TextBox_Total.Value > 0 Then
            TextBox_Reste = Val(TextBox_Encais.Value) - Val(TextBox_Total.Value)
            TextBox_Reste = Format$(TextBox_Reste, "# ##0")
            TextBox_Encais = Format$(TextBox_Encais, "# ##0")
        ElseIf TextBox_Total.Value < 0 Then
            TextBox_Reste = Val(TextBox_Encais.Value) + Val(TextBox_Total.Value)
            TextBox_Reste = Format$(TextBox_Reste, "# ##0")
            TextBox_Encais = Format$(TextBox_Encais, "# ##0")
        End If
    End Sub
    Nain porte koi : tenant compte de votre observation sur mon code, je dois le maintenir comme cela vous voulez dire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextBox_Encais = Format(TextBox_Encais, "# ##0")
    En rappel le textbox_encais constate le montant remis par le client tout simplement.

  11. #11
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 541
    Par défaut
    @capi81,
    Je serais tenté de dire, qui peut le plus peut le moins, Par contre si pas de virgule je ne vois pas ce qui interfère dans le code pouvez-vous nous donner un peu plus d'explications ? Valeurs saisies et résultats.
    Cela nous aidera, pour vous aiguiller au mieux.
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en :resolu: Vous avez aimé la discussion alors un :plusser: fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  12. #12
    Invité de passage
    Homme Profil pro
         ​​​  
    Inscrit en
    Décembre 2025
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité :      ​​​  

    Informations forums :
    Inscription : Décembre 2025
    Messages : 21
    Par défaut
    Normalement le formatage ne doit pas entrer dans les calcules mais juste pour l'affichage des données surtout si le programme est utilisé sur plusieurs postes qui pourraient avoir des formats numéros différents c'est une erreur de design.

    cette ligne à corriger aussi (prix unitaire) je pense

    .Range("o" & ligExport) = CDbl(Me.Controls("TextBox_PV" & I))

    Un autre remarque lorsque TextBox_Total est modifié le champs Rest reste inchangé avec une ancienne valeur
    ajouter dans TextBox_Total_Change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox_Total_Change()
    TextBox_Reste = ""
    End Sub

  13. #13
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 580
    Par défaut
    Citation Envoyé par Valtrase Voir le message
    @capi81,
    Je serais tenté de dire, qui peut le plus peut le moins, Par contre si pas de virgule je ne vois pas ce qui interfère dans le code pouvez-vous nous donner un peu plus d'explications ? Valeurs saisies et résultats.
    Cela nous aidera, pour vous aiguiller au mieux.
    Bonsoir Valtrase
    en réalité, j'ai constaté que le textbox_encaiss, lorsque je commence à saisir le montant reçu du client, je constate une anomalie dans la saisie. par exemple lorsque je commence à saisir 5000 comme montant encaissé, à partir de 50 ou 500 saisi, le montant du textbox_encais change brutalement, je lis 365xx (x étant d'autres chiffre), ce qui n'a rien a voir avec les 5000 que je devrais saisir. c'est ce qui ma amené à intégrer "val" dans le format et ca marche. si c'est du bricolage, merci de m'aider avec la meilleure formule.

  14. #14
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 580
    Par défaut
    Citation Envoyé par Informt2025 Voir le message
    Normalement le formatage ne doit pas entrer dans les calcules mais juste pour l'affichage des données surtout si le programme est utilisé sur plusieurs postes qui pourraient avoir des formats numéros différents c'est une erreur de design.

    cette ligne à corriger aussi (prix unitaire) je pense

    .Range("o" & ligExport) = CDbl(Me.Controls("TextBox_PV" & I))

    Un autre remarque lorsque TextBox_Total est modifié le champs Rest reste inchangé avec une ancienne valeur
    ajouter dans TextBox_Total_Change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub TextBox_Total_Change()
    TextBox_Reste = ""
    End Sub
    Bonsoir Informt2025
    Le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("o" & ligExport) = CDbl(Me.Controls("TextBox_PV" & I))
    a été modifié.
    Voici la nouvelle donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("o" & ligExport) = CDbl(val(Me.Controls("TextBox_PV") & I))
    n autre remarque lorsque TextBox_Total est modifié le champs Rest reste inchangé avec une ancienne valeur
    ajouter dans TextBox_Total_Change
    Effectivement, c'est lorsqu'on renseigne le textbox_encais que le champ reste est impacté sinon ca ne joue pas trop sur le résultat souhaité.

  15. #15
    Invité de passage
    Homme Profil pro
         ​​​  
    Inscrit en
    Décembre 2025
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité :      ​​​  

    Informations forums :
    Inscription : Décembre 2025
    Messages : 21
    Par défaut
    Bonjour,

    J'ai créé un module de classe pour regrouper les Textboxs et les ComboBoxs c'est plus propre pour gérer les éventements et le formatage, une propriété a été ajoutée à la fiche Fields("nom du controle") pour lire et écrire dans contrôles qui utilisent le formatage.

    Effectivement, c'est lorsqu'on renseigne le textbox_encais que le champ reste est impacté sinon ca ne joue pas trop sur le résultat souhaité.
    Rest est consulté au moment de la validation et comparé au Total donc il doit être recalculé automatiquement pour éviter qu'une valeur erronée soit enregistrée, probablement l'utilisateur suit une logique bien précise mais ça n’empêche pas de modifier un article à la dernière minute.

    Dans le nouveau fichier si tu ne veux pas le calcul auto désactive cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Case "TextBox_Total": UpdateRestAvoir
    Fichiers attachés Fichiers attachés

  16. #16
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 580
    Par défaut
    Bonsoir Informt2025
    Je vous remercie pour le travail abattu dont le but est de faciliter les choses.
    Je viens de réaliser quelques tests et voici mes constats:
    Lorsque je choisi un produit, après avoir renseigné sa quantité(2 par exemple),le montant qui s'affiche dans textbox_montant est -547862 au lieu de 1400.
    Cela signifie qu'il y'a un problème dans le calcul.

    Merci de revoir

  17. #17
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 541
    Par défaut
    Bonsoir à tous,
    @capi81,
    Je pense que l'utilisation de plusieurs zones de texte est un peu restrictif non ? (Si plus de dix entrées).
    Ne serait-il pas plus judicieux d'utiliser une zone de liste ? (A moins que vous vouliez avoir la possibilité de changer le prix de chaque entrée.)
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en :resolu: Vous avez aimé la discussion alors un :plusser: fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

  18. #18
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 580
    Par défaut
    Bonjour Valtrase
    Merci pour votre proposition.
    Un exemple me permettrait de mieux l'apprécier si possible.

    Cordialement

  19. #19
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 634
    Par défaut
    bonjour,
    cdbl prend en compte les paramètres régionaux.

    si sur un PC qui dispose d'un pavé numérique tu écriras [.] point et non [,] virgule comment décimal et la erreur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range("d" & ligExport) = val(replace(Me.Controls("TextBox_Mtant" & I),",","."))
    val utilise le point comme décimal, en remplaçant la virgule par le point tu n'auras plus ce genre d'erreur.

    cdbl("10.20") genaire un erreur , type incompatible, si la décimal dans les paramètres régionaux est la virgule.

  20. #20
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    541
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 541
    Par défaut
    Bonjour à tous,
    Citation Envoyé par capi81 Voir le message
    Bonjour Valtrase
    Merci pour votre proposition.
    Un exemple me permettrait de mieux l'apprécier si possible.

    Cordialement
    Je vais tenté de prendre un moment pour faire un petit exemple...
    Jean-Paul sous Office 365 et Windows 10/11 (Intel I7 16Go)

    Si vous avez trouvé réponse à votre question penser à la passer en :resolu: Vous avez aimé la discussion alors un :plusser: fait toujours plaisir.
    Le savoir n'a de valeur que s'il est partagé.
    La vérité de demain se nourrit de l'erreur d'hier. Antoine de Saint-Exupéry

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. modifier des donnes sur une page et les enregistrer dans une autre
    Par cyroulette dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/09/2021, 19h50
  2. Réponses: 5
    Dernier message: 23/04/2021, 17h03
  3. Réponses: 4
    Dernier message: 17/05/2017, 07h31
  4. Macro pour grouper des lignes sur une plage qui peut varier
    Par RichRich59 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/01/2011, 14h04
  5. Macro pour grouper des lignes sur une plage qui peut varier
    Par girardinho dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 26/07/2010, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo