Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/02/2011, 11h39   #1
Invité de passage
 
Homme olivier
Assistant aux utilisateurs
Inscription : février 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme olivier
Âge : 51
Localisation : France, Tarn et Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Assistant aux utilisateurs
Secteur : Distribution

Informations forums :
Inscription : février 2011
Messages : 7
Points : 1
Points : 1
Par défaut le type de valeur récupéré d'une combobox ne correspond pas

Bonjour,
je suis nouveau , autodidacte et un débutant pour moi est un expert . Voilà le décor est planté .
J'ai bien lu le post " A lire avant de poster" ; ça fait peur ... j'espère que ma demande sera prise en compte .

La situation:
j'ai une combobox dans un formulaire basée sur une requête elle même basée sur une table Ex:Tbl_Users .
Je récupère trois champs :
champ1 : [ID_User] de type Num et Long Ex: 1001234
champ2 : [nom] de type texte Ex: Untel
champ3 : [prenom] de type texte Ex: toto
le champ lié est le champ1 et il est caché (0cm;2cm;2cm) pour que soit affiché le nom dans la combobox
Sur l’événement change de la combobox je vais parcourir la table1 Ex:Tbl_Data à la recherche de l'ID_User sélectionné (1001234) pour récupérer les valeurs de certains champs dans les enregistrements qui seront trouvés .

Le problème:
Dans ma boucle quand je trouve une correspondance entre ID_User de ma combobox et l'ID_User de la table Tbl_Data, le type de ma valeur combobox est de type texte "1001234" (alors quelle est bien numérique) et le type de la valeur trouvée dans Tbl_Data est numérique 1001234 . Comme les deux type sont différents la correspondance ne se fait pas et les données ne sont pas récupérées.

Le constat:
Cela fonctionne bien quand dans ma combobox j'affiche l'ID_User (1cm;2cm;2cm) mais c'est l'ID_User( Ex:1001234) que l'on voit dans la combobox et pas le nom (Ex:Toto).

La demande:
Je ne sais pas comment faire pour que soit affiché le nom Toto dans ma combobox et que la valeur dans la boucle soit 1001234 et non "1001234"

Pourriez vous me guider svp.
glopglop82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 11h46   #2
Membre Expert
 
Avatar de keita
 
Homme
Inscription : novembre 2002
Messages : 879
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Côte d'Ivoire

Informations forums :
Inscription : novembre 2002
Messages : 879
Points : 1 015
Points : 1 015
Envoyer un message via MSN à keita
bonjour
Dans ta boucle, tu atteints la veleur de la 1ère colonne en faisant:
Code :
....= me.MaComboBox.column(0)
@+
keita est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/02/2011, 19h35   #3
Invité de passage
 
Homme olivier
Assistant aux utilisateurs
Inscription : février 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme olivier
Âge : 51
Localisation : France, Tarn et Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Assistant aux utilisateurs
Secteur : Distribution

Informations forums :
Inscription : février 2011
Messages : 7
Points : 1
Points : 1
Citation:
Envoyé par keita Voir le message
bonjour
Dans ta boucle, tu atteints la veleur de la 1ère colonne en faisant:
Code :
....= me.MaComboBox.column(0)
@+
keita , d'abord merci d'avoir répondu si rapidement .

Le problème reste entier . la valeur récupérée est toujours de type texte Ex : "1001234" et non de type numérique Ex:1001234 .

en info complémentaire , j'utilise l'assistant pour la requête qui incrémente ma combobox et non du code car je ne sais pas faire . Je ne peux donc pas tester et suivre l'exemple que j'ai trouvé dans un post ou en SQL on affiche deux champs dans la combobox Ex: 1001234 Untel . Peut être que ce serait une solution ?

je crois que c'est du style :
Code :
"SELECT champ1 ' " & : & " 'champs2 FROM Tbl ;"
ou quelque chose d'approchant ; si je retrouve le post , je le joindrais à ma prochaine réponse .

++
glopglop82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 05h54   #4
Membre Expert
 
Homme Pierre ANTOINE
Inscription : février 2008
Messages : 650
Détails du profil
Informations personnelles :
Nom : Homme Pierre ANTOINE
Âge : 43
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : février 2008
Messages : 650
Points : 1 302
Points : 1 302
bonjour

Je pense que nous aurions besoin de savoir quelle est la source de la combo box.

Pour cela, ouvrir le formulaire en mode création.
sélectionner la combo
afficher les proprétés, 2nd onglet ("données")
ligne "contenu".

si vous pouviez nous la poster, cela nous aiderait à comprendre.

ceci dit, selon toute vraisemblance, on récupère une valeur texte.
Etes-vous sûr que dans votre table Tbl_Users, le champ [ID_User] est numérique?

Pierre
pier.antoine est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 08h49   #5
Invité de passage
 
Homme olivier
Assistant aux utilisateurs
Inscription : février 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme olivier
Âge : 51
Localisation : France, Tarn et Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Assistant aux utilisateurs
Secteur : Distribution

Informations forums :
Inscription : février 2011
Messages : 7
Points : 1
Points : 1
Citation:
Envoyé par pier.antoine Voir le message
bonjour

Je pense que nous aurions besoin de savoir quelle est la source de la combo box.

Pour cela, ouvrir le formulaire en mode création.
sélectionner la combo
afficher les proprétés, 2nd onglet ("données")
ligne "contenu".

si vous pouviez nous la poster, cela nous aiderait à comprendre.

ceci dit, selon toute vraisemblance, on récupère une valeur texte.
Etes-vous sûr que dans votre table Tbl_Users, le champ [ID_User] est numérique?

Pierre
Bonjour Pierre ,
merci de vous intéresser à mon cas .
je tiens à rappeler que les tables et champs cités sont des exemples car je voulais essayer de faire court et que le but du code sur le clic d'un bouton , par exemple , est d'incrémenter une table temporaire (Tbl_Tmp) à partir d'une autre table (Tbl_Affect) , en vue d'un formulaire ou état , avec seulement une partie d' enregistrements trouvés suivant une condition.

Donc :
oui dans la Tbl_Users, le champ [ID_User] est numérique.

voici le contenu SQL de l'onglet données/contenu.

Code :
SELECT RSel_CollabDeBigBoss.ID_HRA, RSel_CollabDeBigBoss.Nom, RSel_CollabDeBigBoss.Prenom FROM RSel_CollabDeBigBoss WHERE (((RSel_CollabDeBigBoss.ID_HRA)<>1418 And (RSel_CollabDeBigBoss.ID_HRA)<>1616)) ORDER BY RSel_CollabDeBigBoss.Nom, RSel_CollabDeBigBoss.Prenom;
L'exemple de Tbl_User = la requête RSel_CollabDeBigBoss est basée sur la Tbl_Presonnel et l'exemple du champs ID_User = le champ ID_HRA .

ceci étant dit , je ne pense pas que le problème vienne de là car dans l'onglet format de la combobox je prends 3 colonnes (ID_HRA,Nom,Prenom) et suivant le choix de la largeur de la colonne 1 (ID_HRA) si la largeur = 0 pour que dans la combobox ce soit le nom qui s'affiche alors la valeur renvoyée dans ma boucle est de type texte "1003607" , si la largeur = 1 c'est l'ID_HRA qui s'affiche dans la combobox et alors la valeur renvoyée dans ma boucle est de type numérique 1003607 .

Ce que aimerais avoir , s'est afficher le nom dans ma combobox et que dans ma boucle la valeur retournée soit numérique 1003607 .

si ça peut aider voici le code sur clic du bouton :
Code :
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Private Sub Commande14_Click()
 
    Dim cnx As ADODB.Connection 'declaration du type de connexion
    Dim cmd As New ADODB.Command 'declaration du type commande
    Dim stSQL As String 'declaration du type chaine SQL
    Dim Rs As DAO.Recordset 'declaration du type recordset(espace reservé en memoire)
    Dim degre As String
    Dim action As String
    Dim mois As String
 
    mois = Cbo_Mois.Value
 
    Set Rs = CurrentDb.OpenRecordset("Tbl_Affect") 'ouvre la table
 
    stSQL = "DELETE * FROM Tbl_Tmp" ' supprime les enregistrements de la table temporaire
    Set cnx = CurrentProject.Connection
         With cmd
             .ActiveConnection = cnx
             .CommandText = stSQL
             .Execute 'execute sql
         End With
 
     Do While Not Rs.EOF 'tant que pas fin de fichier
         If Rs.EOF And Rs.BOF Then 'controle que le recordset n'est pas vide
         Exit Do
             Else 'sinon
             If Rs.Fields("ID_HRA").Value = Cbo_Collab.Value And Rs.Fields("annee").Value = Cbo_An.Value Then 'si les valeurs de l'enregistrement sont egales aux sélections de la liste
                 Select Case mois ' selectionne les champs a importer suivant le mois
                     Case "janvier"
                     degre = Rs.Fields("Jan_Degre").Value
                     action = Rs.Fields("Jan_Action").Value
 
                     Case "fevrier"
                     degre = Rs.Fields("Fev_Degre").Value
                     action = Rs.Fields("Fev_Action").Value
 
                     Case "mars"
                     degre = Rs.Fields("Mar_Degre").Value
                     action = Rs.Fields("Mar_Action").Value
                 End Select
 
            stsql1 = "INSERT INTO Tbl_Tmp(ID_HRA,annee,objectif,seuil,cible,unit,delai,degre,[action]) VALUES ( '" & Rs.Fields("ID_HRA").Value & "','" & Rs.Fields("Annee").Value & "','" & Rs.Fields("objectif").Value & "','" & Rs.Fields("seuil").Value & "','" & Rs.Fields("cible").Value & "','" & Rs.Fields("unit").Value & "',#" & Rs.Fields("delai").Value & "#,'" & degre & "','" & action & "')" 'insertion dans la table temporaire
 
            With cmd
                .ActiveConnection = cnx
                .CommandText = stsql1
                .Execute 'execute sql1
            End With
            End If
        End If
 
     Rs.MoveNext 'passe à l'enregistrement suivant
    Loop 'boucle
 
    Set cmd = Nothing 'vide la commande
    cnx.Close 'ferme la connexion
    Set cnx = Nothing
 
End Sub
en espérant avoir été plus clair .

++
glopglop82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2011, 10h30   #6
Invité de passage
 
Homme olivier
Assistant aux utilisateurs
Inscription : février 2011
Messages : 7
Détails du profil
Informations personnelles :
Nom : Homme olivier
Âge : 51
Localisation : France, Tarn et Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Assistant aux utilisateurs
Secteur : Distribution

Informations forums :
Inscription : février 2011
Messages : 7
Points : 1
Points : 1
bon j'ai réglé mon problème par une combine , ce qui ne régle pas le problème initial mais bon . " si la route est barrée , prends un autre chemin "

pour finir je garde la solution ou s'affiche l'ID_HRA dans la combo (puisque ça fonctionne pourquoi se priver) et j'ajoute à mon formulaire deux textbox , une pour le nom , une pour le prenom avevec comme source :
pour le nom
pour le prenom

je ne ferme pas ce post de suite car si une solution au problème initial peut être apportée , je suis preneur .

Encore merci à keita et pierre pour leur réponses .

++
glopglop82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h06.


 
 
 
 
Partenaires

Hébergement Web