VBA ACCESS 2010 [Résolu]

Messages postés
79
Date d'inscription
mercredi 14 avril 2010
Dernière intervention
2 août 2014
- 14 août 2012 à 15:38 - Dernière réponse :
Messages postés
79
Date d'inscription
mercredi 14 avril 2010
Dernière intervention
2 août 2014
- 22 août 2012 à 10:29
Bonjour,
J'ai développé plusieurs applis en version 2003 et 2007 d'ACCESS et je passe à ACCESS 2010.
Je code en VBA.
Il semble que l'opérateur "=" pose problème dans le code, et doive être remplacé par "like", ce qui me surprend.
Avez-vous eu le même problème en "migrant" vers 2010 et, si oui, comment avez-vous résolu le problème ?


Damedom Sologne
Afficher la suite 

Votre réponse

23 réponses

Meilleure réponse
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Dernière intervention
3 octobre 2013
- 22 août 2012 à 08:23
3
Merci
Bonjour

voici ce que j'ai trouvé pour l'instant
http://social.msdn.microsoft.com/Forums/en-US/accessdev/thread/7d2ed2e7-3288-42a2-b8c1-ec3cd9033951/

Je n'ai pas eu ce problème jusqu'à maintenant, même en partant de la version 97

Si c'est autre chose, je suis intéressé ayant en charge le support et développement access et excel dans mon entreprise.

Pour ma part je ne converti en 2010 que les bases qui le nécessitent (par exemple des menus personnalisés) car access 2010 supporte très bien les bases 2003.

bonne journée

Merci c148270 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de c148270
Meilleure réponse
Messages postés
79
Date d'inscription
mercredi 14 avril 2010
Dernière intervention
2 août 2014
- 22 août 2012 à 10:29
3
Merci
Cher c148270

Merci pour ce lien.
La solution de remplacer
option compare database
par
option compare text
fonctionne PARFAITEMENT

Cette instruction que j'utilisais par habitude, sans la comprendre vraiment, gère justement la façon de comparer !
J'ai testé, ça compare très bien aussi les nombres !

Donc je n'étais pas seule à avoir ce problème, et, avis à la population, cela semble être la solution.


Damedom Sologne

Merci damedom41 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de damedom41
Messages postés
14299
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 novembre 2018
- 14 août 2012 à 16:55
0
Merci
Bonjour,

Dans quel test ?

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Commenter la réponse de NHenry
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
- 14 août 2012 à 17:26
0
Merci
On n'est pas au début avril, pourtant ...
Commenter la réponse de cs_Jack
Messages postés
79
Date d'inscription
mercredi 14 avril 2010
Dernière intervention
2 août 2014
- 14 août 2012 à 17:51
0
Merci
Exemple de code qui fonctionnait parfaitement :
[i] If dbact = "cre" Then
MsgBox ("ce code existe déjà")
Else
Call affichzones
End If/i

Pour que mon programme fonctionne en Version 2010 :
[i] If dbact Like "cre" Then
MsgBox ("ce code existe déjà")
Else
Call affichzones
End If/i

Alors que les tests d'égalité sur du numérique fonctionnent toujours correctement.

J'ai donc écrit cette petite routine pour tester :
[i]Public Sub test_egalite()
Dim dbact As String
dbact = "cre"
If dbact = "cre" Then
MsgBox ("je suis en création")
Else
MsgBox ("je n'y suis pas")
End If/i
Et j'obtiens le message d'erreur suivant :
Erreur d'exécution 5 : Argument ou appel de procédure incorrect.

Si je modifie ainsi ma routine :
[i]Public Sub test_egalite()
Dim dbact As String
dbact = "cre"
If dbact Like "cre" Then
MsgBox ("je suis en création")
Else
MsgBox ("je n'y suis pas")
End If/i
Cela fonctionne parfaitement.

Et non, nous ne sommes pas début avril. Peut-être un paramétrage malheureux quelque part dans Access, mais vu le nombre de tests que je fais avec le signe "=" dans mes programmes, ça ne me fait pas rire du tout !


Damedom Sologne
Commenter la réponse de damedom41
Messages postés
14299
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 novembre 2018
- 14 août 2012 à 21:56
0
Merci
Bonjour,

"Erreur d'exécution 5 : Argument ou appel de procédure incorrect. "

Ce message d'erreur peut apparaitre en VBA, dans ce cas (et avec Excel), je repartait d'un fichier vide et je réimportait mes macros.
J'ai déjà vu que certains appels, pourtant justes, renvoyait cette erreur, au bout d'un certains nombre de compilation (enfin, d’exécution après changement du code), la seule solution trouvée était cela, mais essaye peut être juste de retirer toutes les macros de ton fichiers, puis après un compactage, de les remettre, cela fonctionnera peut être.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Commenter la réponse de NHenry
Messages postés
79
Date d'inscription
mercredi 14 avril 2010
Dernière intervention
2 août 2014
- 15 août 2012 à 00:12
0
Merci
Je suis dans un environnement Access, et j'ai n'ai aucun macro, seulement du code VBA.
J'ai essayé de recompacter ma base, mais ça ne change rien. Par ailleurs, aucun erreur au deboggage !

La plupart de mes clients, pour qui j'ai développé des programmes complexes (je n'interviens que lorsqu'ils ne trouvent pas ce qu'ils veulent "tout fait" sur le marché, et je fais du "sur mesure") avec des versions antérieures d'Access évoluent vers 2010.
Je suis donc particulièrement inquiète de devoir "revoir" tout mon code

Je peux bien sûr utiliser "like" dans mes nouveaux développements, et ça fonctionne, mais ça me parait bizarre, parce que je cherche une vraie égalité.
Est-ce que "like" si on n'utilise ni crochets, ni étoiles, ni rien d'autre va vraiment tester l'égalité ?

Peux-tu essayer ma routine de test dans ta version d'Access 2010, pour voir si ça fait la même chose ? J'ai peut-être sans le vouloir modifié des options ?

HELP !!!!!!!!!!!!!!!!!


Damedom Sologne
Commenter la réponse de damedom41
Messages postés
14299
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 novembre 2018
- 15 août 2012 à 00:58
0
Merci
Bonjour,

Je suis dans un environnement Access, et j'ai n'ai aucun macro, seulement du code VBA.

VBA sert à faire des macros, si tu fais du VBA, tu codes des macros, même si tu fais des choses évoluées, ça restes des macros.

Sur quelle ligne se produit l'erreur ?

Sinon, j'ai 2003, pas 2010.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Commenter la réponse de NHenry
Messages postés
1403
Date d'inscription
mardi 1 mai 2007
Dernière intervention
7 octobre 2012
- 15 août 2012 à 03:28
0
Merci
Bonsoir,

C' est l' appel à MsgBox qui pose problème ..!

Soit c' est: Call MsgBox ("taratata")
Soit c' est: MsgBox "taratata"
Soit c' est: reponse= MsgBox ("taratata")

Mais en aucun cas: MsgBox ("taratata")
tout court !




[] Ce qui va sans dire. va mieux en le disant.
Commenter la réponse de LIBRE_MAX
Messages postés
79
Date d'inscription
mercredi 14 avril 2010
Dernière intervention
2 août 2014
- 15 août 2012 à 09:53
0
Merci
Même si cela semble incorrect, j'utilise msgbox("tarata") depuis 7 ans environ sans aucun problème. Ca doit donc être toléré. Et puis la version "like" fonctionne parfaitement. Cela ne me semble pas la cause du problème.


Damedom Sologne
Commenter la réponse de damedom41
Messages postés
79
Date d'inscription
mercredi 14 avril 2010
Dernière intervention
2 août 2014
- 15 août 2012 à 10:02
0
Merci
Je ne savais pas que VBA ne faisait que créer des macros, puisqu'on génère à la fois des procédures et des fonctions. Mais il est vrai que pour moi la notion de macro est assez "floue". Je codais à l'origine en Cobol et en Basic, et VBA ressemble beaucoup à un mixte de ces langages. Je vais me renseigner sur ce qu'est une macro.
Pour répondre à la question, l'erreur se produit sur la ligne :
if dbact = "cre"
Hélas, dans les autres versions d'Access (2003 comprise) cela fonctionne parfaitement.

Mon utilisation de "=" te semble-t-elle incorrecte même si elle était tolérée par les autres versions ?
N'as tu pas dans tes relations quelqu'un qui a le même problème, ou qui a 2010 pour que tu puisses tester ?

Je suis très perplexe d'être la seule à avoir ce problème, d'autant que 2010 ne vient pas de sortir !



Damedom Sologne
Commenter la réponse de damedom41
0
Merci
Bonjour

Dans le cadre professionnel, je souhaite mettre en place un produit Access qui me permette de gérer le suivi du versement des indemnités journalières de la sécurité sociale et celles passaient en paie pour lien avec la comptabilité :

A partir d'une fenêtre de dialoque je pourrais choisir la sté qui m'intéresse (une quinzaine en tout).Lorsque je cliquerais sur la société concerné via un bouton connexion, j'obtiendrais un formulaire qui me permettrait d'accèder à la fiche du salarié ou il me sera possible de pouvoir dans des sous formulaires a l'intérieur de saisir les indemnités journalières reçues et celle passaient en paie.

Ensuite, je voudrais que dans l'écran principale du formulaire apparaisse le nb de jours d'arrêt pris sur l'année civile en isolant la maternité et la paternité. Dès que cela atteint 90 jours, un indicateur clignotant m'indiquerait le message suivant "PRO BTP"

Je connais un peu ACCESS 2010, pourriez vous m'aider à le concevoir rapidement

Merci d'avance
Commenter la réponse de FMAILYS
Messages postés
79
Date d'inscription
mercredi 14 avril 2010
Dernière intervention
2 août 2014
- 15 août 2012 à 13:31
0
Merci
Il faut d'abord bien concevoir votre base de données, car c'est de la qualité de cette conception que découleront la sécurité et la simplicité de création de vos programmes. Pratiquez-vous la méthode Merise ?


Damedom Sologne
Commenter la réponse de damedom41
0
Merci
Tout d'abord bonjour et merci de m'aider
Qu'est ce que la méthode MERISE
j'ai une idée bien précise de ce que je ve faire
Pouvez vous m'aider à la conception complète de mon programme
j'ai déja commencé. Serait il possible de vous adresser mon fichier par mail
Cdt
Commenter la réponse de FMAILYS
Messages postés
79
Date d'inscription
mercredi 14 avril 2010
Dernière intervention
2 août 2014
- 15 août 2012 à 13:38
0
Merci
A vue de nez, il vous faut :
- une table sociétés avec une clé primaire unique code société qui peut parfaitement être alphanumérique, et/ou être identique à votre code comptable
- une table salariés avec une clé primaire pour lesquelles on choisit souvent le numéro de sécurité sociale, qui est à la fois unique et porteur de sens (sexe, année et mois de naissance)
- une table salarié/période dont la clé primaire est à la fois le code d'un salarié existant (voir table précédente) et d'une période qui sera probablement une date de type aaaamm (année sur 4 chiffres mois sur 2).
Dans cette dernière table vous saisirez aussi bien les montants que les motifs (maladie, maternité, paternité, accident du travail etc que vous suggère de choisir dans une table, et non de saisir à chaque fois).
Vous pourrez ainsi grâce à une requête SQL relativement simple faire toutes les statistiques que vous souhaitez.


Damedom Sologne
Commenter la réponse de damedom41
Messages postés
14299
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
16 novembre 2018
- 15 août 2012 à 13:43
0
Merci
Bonjour,

FMAILYS, ta question est hors du sujet initial de cette discussion, fais donc ton propre sujet.

le règlement CS

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Commenter la réponse de NHenry
0
Merci
Ma table société est déja prête
Ma table salarié est prête
Pour l'autre table, il faudra que dans la fiche salarié, je puisse mettre tous les arrêts pour un même salarié, c possible ?
Concernant la boite de dialogue qui permettra de sélectionner la société sur laquelle je voudrais travailler, sera t il possible de de ne pas avoir accès aux autres salariés des autres sociétés
comment puis je vous envoyer mon début de fichier par le biais du forum
Commenter la réponse de FMAILYS
Messages postés
79
Date d'inscription
mercredi 14 avril 2010
Dernière intervention
2 août 2014
- 15 août 2012 à 13:49
0
Merci
Effectivement je préfèrerais que vous fassiez votre propre sujet, pour pouvoir espérer avoir des réponses au mien !
Pour la méthode Merise, qui est une excellente méthode de conception de base de données, il existe de bons tutoriels sur le net.

Pour le reste, si le modérateur le permet, je vous communiquerai mon adresse mail pour vous aider plus efficacement.

Damedom Sologne
Commenter la réponse de damedom41
0
Merci
DAMEDON41, j'ai créé mon sujet
Peux tu continuer à m'aider stp et m'autoriser à t'envoyer un mail
Cdt
Commenter la réponse de FMAILYS
0
Merci
damedon41 mon sujet est programmation access
Cdt
Commenter la réponse de FMAILYS

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.