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 21/07/2011, 17h22   #1
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 304
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 304
Points : 18
Points : 18
Par défaut Faire une boucle en VBA possible? et tester la valeur des champs

Bonjour,

Pour avancer dans ma base de données j'aurai aimé savoir comment créer une boucle en VBA ? et tester la valeur de mes champs.

Lorsque je lance la compil le script bloque à select Case (sur ligne en jaune).
Je voudrais parcourir mes champs de C52 à C1 et envoyer une valeur dans un champs nomé variation 1 ou 2 ou 3 (voir ci-dessous) merci de votre aide



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Form_BeforeUpdate(Cancel As Integer)
 For i = 52 To 1 Step -1    
   Select Case Nz(Me("C" & CStr(i)), "")  'teste la valeur du champ C52, C51, ... Jusqu'a C1
  Case "RAS"
   Me("variation") = 1   
   Exit For                 'sortie de la boucle, les autres champs ne sont pas testés
  Case "CC"
   Me("variation") = 2
   Exit For
  Case "X"
   Me("variation") = 3
   Exit For
  End Select
 Next i
End Sub
Debutant10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 19h51   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Quel est le message d'erreur du compilateur ?

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 20h17   #3
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 304
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 304
Points : 18
Points : 18
Par défaut Code VBA

Message : Erreur d'execution 3164 le champ ne peut être mis à jour

(Voulez-vous la pièce jointe ? )
Debutant10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 20h32   #4
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Non merci pour la pièce jointe.

Peux tu confirmer que c'est sur la ligne 3 que l'erreur se produit car je ne vois pas de cause évidente à cela.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/07/2011, 20h48   #5
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 304
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 304
Points : 18
Points : 18
Par défaut Erreur d'execution 3164 le champ ne peut être mis à jour

Je viens de relancer actuellement quand j'inscris par exemple la valeur "CC" dans le champ C2 de mon formulaire la ligne VBA --> Me("variation") = 2 et en jaune

Message : Erreur d'execution 3164 le champ ne peut être mis à jour
Debutant10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 21h08   #6
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
OK, cela a plus de sens.

Peux-tu modifier le champ [variation] à la main, c-à-d sans passer par le code, dans ton formulaire ?
Si non, peux-tu le modifier à la main dans la table ou la requête qui alliemente ton formulaire ?

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 21h42   #7
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 304
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 304
Points : 18
Points : 18
Par défaut faire une boucle

Dans mon


1-/ Peux-tu modifier le champ [variation] à la main, c-à-d sans passer par le code, dans ton formulaire ? -->J'ai essayé de le modifier on ne peut pas il reste figée




2-/ Si non, peux-tu le modifier à la main dans la table ou la requête qui alliemente ton formulaire ? --> Dans ma table pas modifiable, par contre comme je disais ma requête est modifiable mais limité de C52 à C49 mais pas jusqu'a C1 c pour cela que je voudrais passer en VBA pour faire la boucle de C52à C1 voici ma requête limité
Code :
Variation: PremVrai([C52]="RAS";"1";[C52]="CC";"2";[C52]="X";"3";[C51]="RAS";"1";[C51]="CC";"2";[C51]="X";"3";[C50]="RAS";"1";[C50]="CC";"2";[C50]="X";"3";[C49]="RAS";"1";[C49]="CC";"2";[C49]="X";"3")
Debutant10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 21h51   #8
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Si tu ne peux pas le modifier à la main dans la source de données à priori tu ne pourras pas le modifier par du code.

Est-ce que Variation est dans une table quelque part ou sert-il seulement à l'affichage ?

S'il sert seulement à l'affichage on doit pouvoir faire le travail dans la requête qui allimente le formulaire.

Dans cette idée, as-tu une clef primaire qui te permettes d'identifier de manière unique tes enregistrements ?

Si il est dans une table on peut essayer d'aller modifier la table mais cela n'est pas forcément possible.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 21/07/2011, 22h28   #9
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 304
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 304
Points : 18
Points : 18
Par défaut Comment faire j'écoute vos conseils

OK Merci

1-/ Variation sert seulement à l'affichage c'est le but.

2-/ Oui c'est exactement cela sert seulement à l'affichage on doit pouvoir faire le travail dans la requête qui allimente le formulaire.

OUI j'ai une clef primaire qui te permettes d'identifier de manière unique les enregistrements ?

je vous écoutes comment faire ?
Debutant10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 19h24   #10
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 304
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 304
Points : 18
Points : 18
Par défaut Comment simplifier la 2 ème requête SQL ?

Bonjour,

Effectivement on doit pouvoir faire le travail dans la requête qui allimente le formulaire. Comment simplifier la 2 ème requête SQL pour la faire fonctionner ?

Pour cela 2 requêtes :

1-/ Celle qui fonctionne très bien de C52 à C49:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT Table_planification.N°, Table_planification.Etape1, Table_planification.Etape2, Table_planification.Etape3, Table_planification.Etape4, Table_planification.Etape5, Table_planification.Etape6, Table_planification.Etape7, Table_planification.Etape8,
 Table_planification.C1, Table_planification.C2, Table_planification.C3, Table_planification.C4, Table_planification.C5, Table_planification.C6, 
 Table_planification.C7, Table_planification.C8, Table_planification.C9, Table_planification.C10, Table_planification.C11, Table_planification.C12, 
 Table_planification.C13, Table_planification.C14, Table_planification.C15, Table_planification.C16, Table_planification.C17, Table_planification.C18, 
 Table_planification.C19, Table_planification.C20, Table_planification.C21, Table_planification.C22, Table_planification.C23, Table_planification.C24, 
 Table_planification.C25, Table_planification.C26, Table_planification.C27, Table_planification.C28, Table_planification.C29, Table_planification.C30, 
 Table_planification.C31, Table_planification.C32, Table_planification.C33, Table_planification.C34, Table_planification.C35, Table_planification.C36,
 Table_planification.C37, Table_planification.C38, Table_planification.C39, Table_planification.C40, Table_planification.C41, Table_planification.C42, 
 Table_planification.C43, Table_planification.C44, Table_planification.C45, Table_planification.C46, Table_planification.C47, Table_planification.C48, 
 Table_planification.C49, Table_planification.C50, Table_planification.C51, Table_planification.C52,
 
 Switch([C52]="RAS","1",[C52]="CC","2",[C52]="X","3",[C51]="RAS","1",[C51]="CC","2",[C51]="X","3",[C50]="RAS","1",[C50]="CC","2",[C50]="X","3",[C49]="RAS","1",[C49]="CC","2",[C49]="X","3") AS Variation
FROM Table_planification;
2-/ Celle qui bloque après C49, je voudrais que la 2 ème requête fonctionne comme la première des champs C52 à C1 (le pb c'est au niveau du switch après C49 je n'arrive pas à la simplifier)

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
60
61
62
63
64
65
66
SELECT Table_planification.N°, Table_planification.Etape1, Table_planification.Etape2, Table_planification.Etape3, Table_planification.Etape4, Table_planification.Etape5, Table_planification.Etape6, Table_planification.Etape7, Table_planification.Etape8,
 Table_planification.C1, Table_planification.C2, Table_planification.C3, Table_planification.C4, Table_planification.C5, Table_planification.C6, 
 Table_planification.C7, Table_planification.C8, Table_planification.C9, Table_planification.C10, Table_planification.C11, Table_planification.C12, 
 Table_planification.C13, Table_planification.C14, Table_planification.C15, Table_planification.C16, Table_planification.C17, Table_planification.C18, 
 Table_planification.C19, Table_planification.C20, Table_planification.C21, Table_planification.C22, Table_planification.C23, Table_planification.C24, 
 Table_planification.C25, Table_planification.C26, Table_planification.C27, Table_planification.C28, Table_planification.C29, Table_planification.C30, 
 Table_planification.C31, Table_planification.C32, Table_planification.C33, Table_planification.C34, Table_planification.C35, Table_planification.C36,
 Table_planification.C37, Table_planification.C38, Table_planification.C39, Table_planification.C40, Table_planification.C41, Table_planification.C42, 
 Table_planification.C43, Table_planification.C44, Table_planification.C45, Table_planification.C46, Table_planification.C47, Table_planification.C48, 
 Table_planification.C49, Table_planification.C50, Table_planification.C51, Table_planification.C52,
 
 Switch([C52]="RAS","1",[C52]="CC","2",[C52]="X","3",
[C51]="RAS","1",[C51]="CC","2",[C51]="X","3",
[C50]="RAS","1",[C50]="CC","2",[C50]="X","3",
[C49]="RAS","1",[C49]="CC","2",[C49]="X","3",
[C48]="RAS","1",[C48]="CC","2",[C48]="X","3",
[C47]="RAS","1",[C47]="CC","2",[C47]="X","3",
[C46]="RAS","1",[C46]="CC","2",[C46]="X","3",
[C45]="RAS","1",[C45]="CC","2",[C45]="X","3",
[C44]="RAS","1",[C44]="CC","2",[C44]="X","3",
[C43]="RAS","1",[C43]="CC","2",[C43]="X","3",
[C42]="RAS","1",[C42]="CC","2",[C42]="X","3",
[C41]="RAS","1",[C41]="CC","2",[C51]="X","3",
[C40]="RAS","1",[C40]="CC","2",[C40]="X","3",
[C39]="RAS","1",[C39]="CC","2",[C39]="X","3",
[C38]="RAS","1",[C38]="CC","2",[C38]="X","3",
[C37]="RAS","1",[C37]="CC","2",[C37]="X","3",
[C36]="RAS","1",[C36]="CC","2",[C36]="X","3",
[C35]="RAS","1",[C35]="CC","2",[C35]="X","3",
[C34]="RAS","1",[C34]="CC","2",[C34]="X","3",
[C33]="RAS","1",[C33]="CC","2",[C33]="X","3",
[C32]="RAS","1",[C32]="CC","2",[C32]="X","3",
[C31]="RAS","1",[C31]="CC","2",[C31]="X","3",
[C30]="RAS","1",[C30]="CC","2",[C30]="X","3",
[C29]="RAS","1",[C29]="CC","2",[C29]="X","3",
[C28]="RAS","1",[C28]="CC","2",[C28]="X","3",
[C27]="RAS","1",[C27]="CC","2",[C27]="X","3",
[C26]="RAS","1",[C26]="CC","2",[C26]="X","3",
[C25]="RAS","1",[C25]="CC","2",[C25]="X","3",
[C24]="RAS","1",[C24]="CC","2",[C24]="X","3",
[C23]="RAS","1",[C23]="CC","2",[C23]="X","3",
[C22]="RAS","1",[C22]="CC","2",[C22]="X","3",
[C21]="RAS","1",[C21]="CC","2",[C21]="X","3",
[C20]="RAS","1",[C20]="CC","2",[C20]="X","3",
[C19]="RAS","1",[C19]="CC","2",[C19]="X","3",
[C18]="RAS","1",[C18]="CC","2",[C18]="X","3",
[C17]="RAS","1",[C17]="CC","2",[C17]="X","3",
[C16]="RAS","1",[C16]="CC","2",[C16]="X","3",
[C15]="RAS","1",[C15]="CC","2",[C15]="X","3",
[C14]="RAS","1",[C14]="CC","2",[C14]="X","3",
[C13]="RAS","1",[C13]="CC","2",[C13]="X","3",
[C12]="RAS","1",[C12]="CC","2",[C12]="X","3",
[C11]="RAS","1",[C11]="CC","2",[C11]="X","3",
[C10]="RAS","1",[C10]="CC","2",[C10]="X","3",
[C9]="RAS","1",[C9]="CC","2",[C9]="X","3",
[C8]="RAS","1",[C8]="CC","2",[C8]="X","3",
[C7]="RAS","1",[C7]="CC","2",[C7]="X","3",
[C6]="RAS","1",[C6]="CC","2",[C6]="X","3",
[C5]="RAS","1",[C5]="CC","2",[C5]="X","3",
[C4]="RAS","1",[C4]="CC","2",[C4]="X","3",
[C3]="RAS","1",[C3]="CC","2",[C3]="X","3",
[C2]="RAS","1",[C2]="CC","2",[C2]="X","3",
[C1]="RAS","1",[C1]="CC","2",[C1]="X","3",
) AS Variation
 
FROM Table_planification;
Debutant10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 20h17   #11
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
La solution qui me parait la plus facile serait de créer une table temporaire et de calculer la valeur des différents champs et de Variation par VBA.

On peut pas faire une boucle sur les champs dans du SQL il faut donner la liste exhaustive.

Le code pourrait ressembler à cela :

Je suppose que TaTableResultat a les mêmes champs que la tables source + Variation

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
 
public Sub CalculerVariation()
   dim db as dao.database:set db=currentdb
   dim rDonnees as dao.recordset:set rDonnees=db.openrecordset("NomTaSource")
   application.execute("Delete * from TaTableResultat") 'Vide la table résultat
   dim rResultat as dao.recordset:set rResultat=db.openRecordset("NomTableResultat")
 
   dim f as dao.fields
 
   do while not rDonees.eof()
      rResulat.addnew
 
      'Recopie les données dans le resultat
      for each f in rDonnees.fields
         rResultat.fields(f.name)=f
      next f
 
      'Calcule Variation
      For i = 52 To 1 Step -1    
         Select Case Nz(rDonnees.fields("C" & CStr(i)), "")  'teste la valeur du champ C52, C51, ... Jusqu'a C1
           Case "RAS"
              rResultat![Variation]= 1   
              Exit For                 'sortie de la boucle, les autres champs ne sont pas testés
 
          Case "CC"
              rResultat![Variation]= 2   
              Exit Forsont   
 
          Case "X"
              rResultat![Variation]= 3
              Exit For 
 
          case else 'Démontre qu'on a étudié tous les cas possibles
              'Ne rien faire 
 
         End Select
 
      Next i
 
      rResultat.update
      rDonnees.movenext
   loop
 
   rResultat.close:set rResultat=nothing
   rDonees.close:set rDonnees=nothing
   set db=nothing 
end sub
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 23/07/2011, 00h19   #12
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 304
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 304
Points : 18
Points : 18
Par défaut Erreur de compilation

Bonjour j'ai un message

Membre de methode ou de données introuvable le compilateur bloque à .Execute


Code :
Application.Execute ("Delete * from TaTableResultat") 'Vide la table résultat
Pouvez-vous tester de votre côté, car j'ai créer une table temporaire je l'ai nomé par exemple "TaTableResultat" lorsque je lance la compil sa bloque à mon avis nous sommes pas loing merci pour votre grande aide
Debutant10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2011, 09h56   #13
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Bonjour,

"Membre de methode ou de données introuvable" Le message est clair. Execute ne fait pas parti d'Application.

Le premier reflexe que tu dois avoir c'est de cliquer sur Aide lorsque tu as un message. C'est formateur.
Ensuite tu fais F1 sur le mot qui pose problème, dans ce cas il s'agit de la méthode Execute (c'est en toutes lettres dans le message). L'aide t'indiquera que cette méthode ne fait pas parti d'Application mais de Database (du moins dans ton cas).

C'est pour cela qu'un copier/coller n'est jamais formateur, il te donne souvent une ligne de conduite générale au plus une trame de départ. Il ne doit jamais être pris comme la solution toute faite. Ce forum n'a pas cette vocation.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/07/2011, 16h30   #14
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Citation:
Envoyé par Debutant10 Voir le message
Bonjour j'ai un message

Membre de methode ou de données introuvable le compilateur bloque à .Execute


Code :
Application.Execute ("Delete * from TaTableResultat") 'Vide la table résultat
Désolé j'ai fait celade mémoire et j'ai du mélanger avec autre chose. Dans l'immédiat met cette ligne en commentaire et vide la table à la main. Je t'invite aussi à changer le nom de la table qui n'a rien de significatif.

Je vais tacher de te revenir avec la bonne syntaxe au pire tu peux mettre :

Code :
1
2
3
DoCmd.setWarning false
docmd.runsql("Delete * form [TaTableResultat]")
DoCmd.setWarning true
qui va faire la même chose.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/07/2011, 22h53   #15
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 304
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 304
Points : 18
Points : 18
Par défaut mettre le resultat avec VBAd ans le champ variation

Bonjour,

Le résultat fonctionne dans le champ variation= 1 ou 2 ou 3 de C52à C49 mais pas jusqu'à C1
Code :
1
2
Switch([C52]="RAS","1",[C52]="CC","2",[C52]="X","3",[C51]="RAS","1",[C51]="CC","2",[C51]="X","3",[C50]="RAS","1",[C50]="CC","2",[C50]="X","3",[C49]="RAS","1",[C49]="CC","2",[C49]="X","3") AS Variation
FROM Table_planification;
J'aurai aimé savoir comment ajouter de C49 à C1 et j'aurai aimé savoir comment intégrer la variable lignes en VBA ? et tester la valeur de mes champs.
Comment faire pour que cela fonctionne les champs de C52 à C1

Le script bloque à select Case (sur ligne en jaune). Je n'arrive pas à avoir le résultat dans le champ varition pour les cas de C52 à C48
Je voudrais parcourir mes champs de C52 à C1 et envoyer une valeur dans un champs nomé variation 1 ou 2 ou 3 (voir ci-dessous) merci de votre aide
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
'Private Sub Form_BeforeUpdate(Cancel As Integer)
  On Error GoTo erreur
 For i = 52 To 1 Step -1
  Select Case Nz(Me("C" & CStr(i)), "")
  Case "RAS"
   Me("variation") = 1
   Exit For
  Case "CC"
   Me("variation") = 2
   Exit For
  Case "X"
   Me("variation") = 3
   Exit For
  End Select
 Next i
Exit Sub
erreur:
 Stop
 Resume
End Sub
Debutant10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 18h04   #16
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Ton dernier post ressemble furrieusement au premier, tu n'as pas essayé le code que j'ai posté ?

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 20h10   #17
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 304
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 304
Points : 18
Points : 18
Par défaut Essayé avec la pièce jointe

Bonjour,

J'ai essayé le code du dernier post mais cela fonctionne pas. Pouvez vous essayé de votre côté avec la pièce jointe ?

car j 'ai suivi à la lettre mais marche pas je ne sait ou sa bloque
Debutant10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 22h14   #18
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Je vais jetter un oeil ce soir.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 23h45   #19
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
OK voici un code qui fonctionne avec la BD que tu as postée.

Dans tes données, la colonne C1 ne contient ni "RAS", ni "CC", ni "X" donc il ne se passe rien. C'est peut-être pourquoi ton Switch() ne marche pas non plus.

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
Option Compare Database
Option Explicit
 
Public Sub CalculerVariation()
Dim db As DAO.Database: Set db = CurrentDb
Dim rDonnees As DAO.Recordset: Set rDonnees = db.OpenRecordset("Table_planification")
Dim i As Long
 
 
Do While Not rDonnees.EOF()
 
    rDonnees.Edit
    'Calcule Variation
    For i = 52 To 1 Step -1
 
        Select Case Nz(rDonnees.Fields("C" & CStr(i)), "")  'teste la valeur du champ C52, C51, ... Jusqu'a C1
            Case "RAS"
                rDonnees![Variation] = 1
                Exit For                 'sortie de la boucle, les autres champs ne sont pas testés
 
            Case "CC"
                rDonnees![Variation] = 2
                Exit For
 
            Case "X"
                rDonnees![Variation] = 3
                Exit For
 
            Case Else 'Démontre qu'on a étudié tous les cas possibles
            'Ne rien faire
 
        End Select
 
    Next i
    rDonnees.Update
 
    rDonnees.MoveNext
Loop
 
rDonnees.Close: Set rDonnees = Nothing
Set db = Nothing
End Sub
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 23h48   #20
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Au fait si tes Cx représentent des semaines saches qu'il peut y avoir 53 semaines par an pas seulement 52 (365 / 7 = 52.14).

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r 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 00h43.


 
 
 
 
Partenaires

Hébergement Web