Erreur définie par l'application ou par l'objet [Résolu/Fermé]

Signaler
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
-
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
-
Mon fichier : https://www.cjoint.com/c/EGDnFL7zB3f

Lorsque je clique sur la macro, si je répond "Revenir au tiers précédent" sur ma MsgBox, j'ai un message d'erreur : Erreur définie par l'application ou par l'objet".

Si je clique directement sur "Revenir au tiers précédent" j'ai cette erreur. Mais également parfois pendant la vérif, elle revient...

Merci de m'aider.

Cordialement.
A voir également:

4 réponses

Messages postés
15740
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 avril 2021
1 483
Bonjour,

a tester dans tous les sens: https://www.cjoint.com/c/EGDp6YLOW7f
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
46
Bonjour,

Même erreur qu'avant. A savoir lorsque je répond "Tiers précédent", on me ramène à la dernière ligne où j'ai répondu "OUI". Les lignes où je répond "NON" sont ignorées par le retour en arrière.

Deuxième erreur, répondez "NON" à la première MsgBox puis "TIERS PRECEDENT" et voyez par vous même.

Merci en tout cas.

Cordialement.
Messages postés
8535
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
9 avril 2021
1 651
Bonjour,

Comme mdf, tu devrais commencer chaque module par
Option Explicit

C'est-à-dire :
Option Explicit
Sub TEST()
...
Messages postés
8535
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
9 avril 2021
1 651 >
Messages postés
15740
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 avril 2021

Bonjour f894009,

En fait, je n'ai même pas cherché d'où vient l'erreur.
Quand je vois un code où les variables ne sont que partiellement déclarées et qui utilise des syntaxes abrégées (Par exemple Range("D" & I) au lieu de Range("D" & I).Value), je me dis qu'il met toutes les chances d'erreur de son coté !!!
Messages postés
15740
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 avril 2021
1 483 >
Messages postés
8535
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
9 avril 2021

Bonjour,

Ok, mais j'ai tendance a le faire aussi suivant ce que je progamme
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
46
Bonjour,

Je suis désolé mais je ne suis qu'un petit débutant du VBA. Il y a 2 mois, je ne savais pas ce que voulait dire le mot "Sub".. J'apprend aussi vite que je peux, je lis autant de tutos que je peux. Mais il me manque clairement des bases et des notions. Dans quels cas exactement utilise-t-on le .Value? Et dans quels cas on ne l'utilise pas svp?
Messages postés
8535
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
9 avril 2021
1 651 >
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019

Bonjour,

Le .Value est à utiliser chaque fois qu'on veut obtenir la valeur contenue dans la cellule,

Mais il est plus important de déclarer la variable qui va recevoir cette valeur, cela permet de s'assurer que cette valeur correspond bien à ce qui est attendu (erreur 13 , incompatibilité de type de variable)

Patrice
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
46 >
Messages postés
8535
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
9 avril 2021

Merci pour l'info :)
Messages postés
15740
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 avril 2021
1 483
Bonjour,

Même erreur qu'avant Pas d'erreur excel !!!!

Votre "truc" se complique allegrement, il faut mettre en memoire toutes les lignes ou vous avez repondu Non ou Oui et suivant: raz ou non Debit, et evidement gerer la mise a jour de ces memoires en fonction des nouvelles reponses.
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
46
C'est vraiment sympa de m'aider en tout cas. Chaque code que vous m'apportez me permet aussi d'améliorer mon niveau en VBA.
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
46
Tant qu'on y est, si votre idée était de "mettre en mémoire les réponses" comme vous l'avez dit juste avant. Si on pouvait faire en sorte qu'on puisse utiliser "Tiers précédent" plusieurs fois sans qu'on ne reste définitivement sur le même tiers. Mais bon ça me paraît compliqué. Oubliez l'idée si vous pensez que ce sera complexe.

Exemple : Je suis sur le Tiers A, je répond "OUI", je passe au tiers B, je répond "OUI", je passe au tiers C, je répond "TIERS PRECEDENT", je passe au tiers B, je répond "TIERS PRECEDENT", je reste sur le tiers B. Il aurait été pas mal de revenir au tiers A.
Messages postés
15740
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 avril 2021
1 483 >
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019

Re,

J'ai trouve pour sans probleme pour les deplacements tiers precedent, pour le moment une colonne Reponse TVA a cote de Solde
. Par contre il y a quelque chose qui me chiffonne depuis un moment, pourquoi faire une raz systematique des debits pour le tiers en cours si clic sur tiers precedent ????
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
46
Vous pointez du doigts une erreur de ma part. La RAZ des débits pour le tiers en cours si on clique sur tiers précédent est inutile puisqu'on va de nouveau répondre à la question.
A oublier donc.
Messages postés
15740
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 avril 2021
1 483 >
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019

Re,

Ok
Messages postés
15740
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 avril 2021
1 483
Bonjour,

fichier modifie avec un petit changement dans les boutons et le fonctionnement.

https://www.cjoint.com/c/EHbfZnA4SNf

Recherche identique a avant
Oui: ecriture debit mais reste sur le tier afin de repondre non si erreur
Non: raz debit et idem Oui pour position
Precedent: remontee au tier precedent sans modifier debit
Suivant: descente au tiers suivant sans modifier debit

Par contre actuellement si vous repondez Oui ou Non la mise a jour ne se fait que sur les lignes du tier en cours que si c'est classe par nom de tiers, mais en descendant. Donc ma question: pour un meme tier pouvez vous repondre non sur au moins une ligne et oui pour les autres
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
46
J'a encore un soucis.... Pouvez-vous m'expliquer pourquoi sur mon fichier final (que je vous joints), une partie de mon code ne marche pas. En effet, là où il y a écrit 403...., la colonne S devrait se remplir. Je ne comprend pas.

Fichier : https://www.cjoint.com/c/EHdhWMEikaf

Merci d'avance....

Cette partie du code devrait le faire....

If Left(CStr(Sheets(1).Range("B" & I).Value), 3) = "403" Then
        Sheets(1).Range("S" & I) = Round(Sheets(1).Range("K" & I) / 1.2, 2)
    End If
Messages postés
15740
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 avril 2021
1 483 >
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019

Bonjour,

A l'origine vous aviez ceci:
            If (Sheets(1).Range("D" & I) = "RAN" Or Sheets(1).Range("D" & I) = "OD") And Left(Sheets(1).Range("B" & I), 3) <> 403 Then


ca:

If Left(CStr(Sheets(1).Range("B" & I).Value), 3) = "403" Then


ne marchera pas puisque dans la colonne B se sont des nombres, pas du texte
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
46
En effet, pour remplir les TVA sur les débits, il faut qu'il y ait RAN ou OD en D. Et pas de 403.

J'ai enlevé CStr, cela ne marche toujours pas pour calculer mes TVA sur les 403... Ca marche chez vous si vous lancez la macro?
Messages postés
15740
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
24 avril 2021
1 483 >
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019

Re,

vu que le fichier n'a pas le meme format que ceux que vous avez mis a dispo

juste avant cette ligne

ReDim TInfo_Li_Tier(DL)


remplacez cette ligne:

DL = Range("A65536").End(xlUp).Row


par

DL = Range("B65536").End(xlUp).Row
Messages postés
850
Date d'inscription
vendredi 13 février 2015
Statut
Membre
Dernière intervention
15 février 2019
46
Mais quel imbécile je suis... Je me disais bien que si une seule partie se remplissait, c'était un problème de définition de dernière ligne...

Merci pour tout. Cette fois tout est OK.

Bonne continuation, encore merci.

Je passe en résolu.