Access code VBA dans état
Résolu
vansav
Messages postés
3
Date d'inscription
Statut
Membre
Dernière intervention
-
Tessel75 Messages postés 192 Date d'inscription Statut Membre Dernière intervention -
Tessel75 Messages postés 192 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis débutante en Access et en VBA. J'ai créé un état et je voudrais qu'une zone de texte de l'état ne s'affiche que si le contrôle de cette zone est positif. En m'inspirant d'un exemple trouvé sur Internet, j'ai essayé pour commencer de définir une fonction Niveau() toute simple :
Function Niveau()
If Me.Somme_De_Débit > Me.Somme_De_Crédit.Value Then
Else: Niveau() = Me.Somme_De_Débit.Value
End If
End Function
Dans l'état, en mode création, j'ai mis dans la zone de texte (à la place de "Indépendant") : =Niveau()
Mais j'obtiens une erreur dans l'état.
Que dois-je faire ?
Merci d'avance
Je suis débutante en Access et en VBA. J'ai créé un état et je voudrais qu'une zone de texte de l'état ne s'affiche que si le contrôle de cette zone est positif. En m'inspirant d'un exemple trouvé sur Internet, j'ai essayé pour commencer de définir une fonction Niveau() toute simple :
Function Niveau()
If Me.Somme_De_Débit > Me.Somme_De_Crédit.Value Then
Else: Niveau() = Me.Somme_De_Débit.Value
End If
End Function
Dans l'état, en mode création, j'ai mis dans la zone de texte (à la place de "Indépendant") : =Niveau()
Mais j'obtiens une erreur dans l'état.
Que dois-je faire ?
Merci d'avance
A voir également:
- Access code VBA dans état
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Remettre pc etat usine - Guide
3 réponses
Bonsoir,
Il n'y a rien d'étonnant à ce que Access vous signale une erreur, c'est le contraire qui l'aurait été. (LOL)
Je me permettrais qq conseils d'un vieux routier autodidacte puisque vous dites que vous êtes débutante.
1) Entrainez-vous avec des macros que vous convertissez en VBA, et apprenez à les lire. Quand vous serez aguerrie à cet exercice, reprenez ce que vous avez obtenu par ce moyen et complexifiez fur à mesure. Puis d'un besoin à un autre, reprenez et adaptez encore et encore, comme des briques de Lego. Tout le monde fait comme cela et finalement, il y a pas beaucoup d'écriture de code totalement neuf et original.
2) Vous n'avez pas vraiment choisi la facilité en reprenant un morceau de code VBA pour un état, qui sert surtout sinon exclusivement pour la mise en page, et l'adaptation de partie d'état en fonction de la valeur de certains contrôles de la partie en question. La principale difficulté, je trouve, est dans le fait qu'il faut bien viser la partie qui ne prend pas le même nom en VBA et sur l'état. Entrainez-vous plutôt avec des actions sur des formulaires, c'est bien plus facile que sur des états.
3) Comme si ce n'était pas suffisant vous allez directement à la mise en place d'une fonction, si j'ai bien lu votre code, avec "=Niveau() " et "indépendant" pour lequel votre lecteur ignore ce qu'il représente, ce qui fait qu'on ne sais pas de quoi il s'agit. Alors, c'est plutôt difficile de vous corriger sur ce point.
4) Enfin, le morceau de code lui-même;
La syntaxe du "si" est la suivante
If condition1 then
........action_1 ou résultat_1
Elseif condition2 then
........action2 ou résultat2
elseif ...... then
......
else
............action_N ou résultat_N
End if
Je plaisantais parce que vous avez écrit:
Else: Niveau() = Me.Somme_De_Débit.Value
sur la même ligne et avec ":" par dessus le marché.
Immanquablement Access bute et c'est normal; il ne faut rien mettre derrière "Else". Donc, même sans rien comprendre de ce que vous vouliez obtenir, il était facile de voir un des points principaux où votre code ne va pas.
5) Et pour finir un dernier conseil. Quand vous avez des "SI" ou des "with", des boucles, etc, ménagez-vous toujours des marges et des retraits comme je viens de vous écrire, vous verrez beaucoup mieux ce que vous avez écrit et vous vous y retrouverez bien plus facilement dans votre propre écriture. Surtout quand vous aurez à faire des conditions ou d'autres choses imbriquées. Vous devez toujours savoir que s'ils sont imbriqués, ils ne doivent pas se chevaucher, mais rester encastrer les uns dans les autres comme des boites. (Ici, j'ai été obligé de mettre des .... Parce que CCM ne garde pas les espaces sinon il s'agit bien d'espaces.
En espérant vous avoir été un peu utile.
Bon courage.
Il n'y a rien d'étonnant à ce que Access vous signale une erreur, c'est le contraire qui l'aurait été. (LOL)
Je me permettrais qq conseils d'un vieux routier autodidacte puisque vous dites que vous êtes débutante.
1) Entrainez-vous avec des macros que vous convertissez en VBA, et apprenez à les lire. Quand vous serez aguerrie à cet exercice, reprenez ce que vous avez obtenu par ce moyen et complexifiez fur à mesure. Puis d'un besoin à un autre, reprenez et adaptez encore et encore, comme des briques de Lego. Tout le monde fait comme cela et finalement, il y a pas beaucoup d'écriture de code totalement neuf et original.
2) Vous n'avez pas vraiment choisi la facilité en reprenant un morceau de code VBA pour un état, qui sert surtout sinon exclusivement pour la mise en page, et l'adaptation de partie d'état en fonction de la valeur de certains contrôles de la partie en question. La principale difficulté, je trouve, est dans le fait qu'il faut bien viser la partie qui ne prend pas le même nom en VBA et sur l'état. Entrainez-vous plutôt avec des actions sur des formulaires, c'est bien plus facile que sur des états.
3) Comme si ce n'était pas suffisant vous allez directement à la mise en place d'une fonction, si j'ai bien lu votre code, avec "=Niveau() " et "indépendant" pour lequel votre lecteur ignore ce qu'il représente, ce qui fait qu'on ne sais pas de quoi il s'agit. Alors, c'est plutôt difficile de vous corriger sur ce point.
4) Enfin, le morceau de code lui-même;
La syntaxe du "si" est la suivante
If condition1 then
........action_1 ou résultat_1
Elseif condition2 then
........action2 ou résultat2
elseif ...... then
......
else
............action_N ou résultat_N
End if
Je plaisantais parce que vous avez écrit:
Else: Niveau() = Me.Somme_De_Débit.Value
sur la même ligne et avec ":" par dessus le marché.
Immanquablement Access bute et c'est normal; il ne faut rien mettre derrière "Else". Donc, même sans rien comprendre de ce que vous vouliez obtenir, il était facile de voir un des points principaux où votre code ne va pas.
5) Et pour finir un dernier conseil. Quand vous avez des "SI" ou des "with", des boucles, etc, ménagez-vous toujours des marges et des retraits comme je viens de vous écrire, vous verrez beaucoup mieux ce que vous avez écrit et vous vous y retrouverez bien plus facilement dans votre propre écriture. Surtout quand vous aurez à faire des conditions ou d'autres choses imbriquées. Vous devez toujours savoir que s'ils sont imbriqués, ils ne doivent pas se chevaucher, mais rester encastrer les uns dans les autres comme des boites. (Ici, j'ai été obligé de mettre des .... Parce que CCM ne garde pas les espaces sinon il s'agit bien d'espaces.
En espérant vous avoir été un peu utile.
Bon courage.
Bonjour vansav
() en trop apres le Else:
Bonjour Tessel75,
Else: Niveau() = Me.Somme_De_Débit.Value
sur la même ligne et avec ":" par dessus le marché. seules les () posent probleme, les : apres le Else sont acceptes, de meme si vous en mettez apres un Case ex:
Bonne suite
() en trop apres le Else:
Function Niveau() If Me.Somme_De_Débit > Me.Somme_De_Crédit.Value Then Else: Niveau = Me.Somme_De_Débit.Value End If End Function
Bonjour Tessel75,
Else: Niveau() = Me.Somme_De_Débit.Value
sur la même ligne et avec ":" par dessus le marché. seules les () posent probleme, les : apres le Else sont acceptes, de meme si vous en mettez apres un Case ex:
Sub test() Select Case x Case 1: z = s Case 2: z = d Case 3: z = e End Select End Sub
Bonne suite