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 04/10/2011, 14h07   #1
Invité régulier
 
Homme
Technicien informatique
Inscription : mai 2011
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Activité : Technicien informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : mai 2011
Messages : 29
Points : 5
Points : 5
Par défaut champ avec incrémentation automatique

Bonjour,

J'ai cherché et j'ai pas trouvé ma réponse.

J'ai un formulaire avec un sous formulaire. Ce sous formulaire peut avoir plusieurs enregistrements

Dans ce sous formulaire je saisis des données dans les champs. Un de ces champs s'appele "numero_but". Si je suis sur la première ligne d'enregistrement je saisi la valeur 1 dans le champ "numero_but", quand je suis sur le 2èmes enregistrements je saisi la valeur 2 dans le champ "numero_but", et ainsi de suite pour l'enregistrement de la 3ème lignes la valeur 3 dans le champ "numero_but"

Le second problème c'est que quand je suis sur le 2ème enregistrement du formulaire, les données du champ "numéro_but" doivent repartir à 1 dans le sous formulaire.

J'espère que vous m'avez compris.

Voici une image du formulaire



Merci

Pascal
pasb71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 04h27   #2
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
Pas trop certain de ce que tu désire ... alors je suppose que tu désire savoir comment faire pour que ta colone s'auto incremente ... a u des connaissance VBA si oui voici un exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim autonumber As long 
dim nummax as long
 
nummax = DCount("champ de ta table", "nom de ta table")
If IsNull(nummax) Then
    autonumber =  "01"
Else
If nummax < 10 Then
    autonumber = "0" & (nummax + 1)
Else
If nummax < 100 Then
    autonumber = (nummax + 1)
Else
If nummax > 100 Then
    autonumber =  (nummax + 1)
Me.ton champ à incrementer = autonumber
End If
End If
End If
End If
end sub
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 11h17   #3
Invité régulier
 
Homme
Technicien informatique
Inscription : mai 2011
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Activité : Technicien informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : mai 2011
Messages : 29
Points : 5
Points : 5
Merci pour la réponse,

je essayé votre code mais je n'ai rien qui s'affiche dans le champ. Quand j'arrive au troisième enregistrement j'ai un message

pasb71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 15h01   #4
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
si tu n'a rien qui s'affiche c'est que tu a mal informé le code à la ligne 15 de mon exemple

le message d'erreur est dû à ta valeur par défault de ton champ

p.s. Désolé j'étais fatiqué hier soir oufff j'ai corrigé mon code j'ai oublié de changer les valeurs de autorisationvar à autonumber (ce terme sert dans mon code à moi donc toi tu doit l'adapter) et j'ai ajouté la déclaration de nummax
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/10/2011, 16h00   #5
Invité régulier
 
Homme
Technicien informatique
Inscription : mai 2011
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Activité : Technicien informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : mai 2011
Messages : 29
Points : 5
Points : 5
merci,

J'arrive pas à faire fonctionner. Je n'ai rien dans le champ

voici mon code

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
 
Private Sub champ1_GotFocus()
Dim autonumber As Long
Dim nummax As Long
 
nummax = DCount("champ1", "test")
If IsNull(nummax) Then
    autonumber = "01"
Else
If nummax < 10 Then
    autonumber = "0" & (nummax + 1)
Else
If nummax < 100 Then
    autonumber = (nummax + 1)
Else
If nummax > 100 Then
    autonumber = (nummax + 1)
Me.champ1 = autonumber
End If
End If
End If
End If
 
End Sub
Merci
pasb71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 01h41   #6
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
Salut j'ai fait les tests et maintenant ca fonctionne ... excepté que tu doit mettre le code sur le click de ta case sinon tu met ton formulaire en boucle
Tu doit laisser le champ auto de ta table et créer une autre colone soit ton champ1.

voici le code
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
Private Sub champ1_click()
Dim autonumber As String
Dim nummax As Integer
 
nummax = DCount("champ1", "test")
autonumber = nummax
If nummax = 0 Then
    autonumber = "01"
 
Else
If nummax < 9 Then
    autonumber = "0" & (nummax + 1)
 
Else
If nummax < 99 Then
    autonumber = (nummax + 1)
 
Else
If nummax > 100 Then
    autonumber = (nummax + 1)
End If
End If
End If
End If
Me.champ1 = autonumber
DoCmd.GoToRecord , , acNext
 
 
End Sub
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 09h14   #7
Invité régulier
 
Homme
Technicien informatique
Inscription : mai 2011
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Activité : Technicien informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : mai 2011
Messages : 29
Points : 5
Points : 5
Merci cette fois cela fonctionne.

Par contre comme j'avais indiqué dans un post précédent, j'utilise ce code dans un sous-formulaire.

Quand je suis dans le formulaire sur l'enregistrement 1, dans le sous formulaire mon champ1 commence à incrémenter à partir de 1

Dès que je passe à l'enregistrement 2 du formulaire mon champ1 incrémente à la suite et ne recommence pas à 1.

voir les images.

Formulaire enregistrement 1



Merci

Formulaire enregistrement 2

pasb71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 14h04   #8
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
Re salut si tu veut que ca recommence tu doit mettre un critère where à nummax :
Code :
nummax = DCount("champ1", "test", "where exemple année")
comment a tu codé ton champ année ... post la requete ou ta source de donnée?
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 14h39   #9
Invité régulier
 
Homme
Technicien informatique
Inscription : mai 2011
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Activité : Technicien informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : mai 2011
Messages : 29
Points : 5
Points : 5
salut,

le contenu du champ année provient d'une table (T-saison) ou j'introduis les années. Dans mon formulaire j'ai créé une zone de liste déroulante puis je vais chercher les valeurs dans la table (T-saison).

voici la requête de la source pour ce champ année

Code :
1
2
 
SELECT [T-saison].id_saison, [T-saison].saison FROM [T-saison] ORDER BY [T-saison].[id_saison];
merci
pasb71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 15h03   #10
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
Ca pourrait ressembler à ceci
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
Private Sub champ1_click()
Dim autonumber As String
Dim nummax As Integer
dim choixannee as date 
 
choixannee = me.annee.colomun(1) 'je presume que le nom de ton champ est année
 
nummax = DCount("champ1", "test","annee='" & choixannee & "'")' et ici que tu a une colone annee dans ta table 
autonumber = nummax
If nummax = 0 Then
    autonumber = "01"
 
Else
If nummax < 9 Then
    autonumber = "0" & (nummax + 1)
 
Else
If nummax < 99 Then
    autonumber = (nummax + 1)
 
Else
If nummax > 100 Then
    autonumber = (nummax + 1)
End If
End If
End If
End If
Me.champ1 = autonumber
DoCmd.GoToRecord , , acNext
 
 
End Sub
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 15h20   #11
Invité régulier
 
Homme
Technicien informatique
Inscription : mai 2011
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Activité : Technicien informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : mai 2011
Messages : 29
Points : 5
Points : 5
salut,

je commence à vraiment à buter contre un poteau

j'ai une erreur. Y reconnait pas cecie

Code :
choixannee = me.id_saison.colomun(1)
ici il y a ma db. Tu peux peut-être voir

http://www.sensler-cup.ch/tmp/test.accdb
pasb71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 05h00   #12
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
Salut ce que tu veut faire ca ne fonctionnera pas voici une base que j'ai fait pour toi mais il va falloir l'adapter

tu doit cliquer sur la barre jaune de access pour activer les macros

tu a maintenant un menu général parce que j'ai dû te faire un formulaire pour ajouter des statistiques et une pour visionner selon la période ou l'année choisi

j'essai de comprendre ce que tu essai de faire mais en vain je croit que tu va devoir créer 1 table par enregistrement

revient moi
Fichiers attachés
Type de fichier : zip test1.zip (39,6 Ko, 6 affichages)
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/10/2011, 10h24   #13
Invité régulier
 
Homme
Technicien informatique
Inscription : mai 2011
Messages : 29
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Suisse

Informations professionnelles :
Activité : Technicien informatique
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : mai 2011
Messages : 29
Points : 5
Points : 5
merci,

je vais regarder ta base que tu as créé.
pasb71 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 04h07.


 
 
 
 
Partenaires

Hébergement Web