Traitement automatique

Résolu
Bonjour,

Voila mon code ci-dessous.
Private Sub Commande17_Click()
Dim Num_PDV As Integer
Num_PDV = 1
While Num_PDV <= 500

If mid([Nom_PDV], 1, 20) = "SKY BUSINESS KQ KATI" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KATI DI" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ BANC" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ BOUG" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ GRAN" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ KANG" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ LAFI" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ SEBE" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ SOTU" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ TITI" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSNESS KQ DIALA" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSNESS KQ DJALA" Then Me.Zone = "BAMAKO" Else
If mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ KAYE" Then Me.Zone = "KAYES" Else
If mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KITA BO" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ KIT" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ KITA" Then Me.Zone = "KITA" Else
If (mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ DIEM") Then Me.Zone = "DIEMA" Else
If mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ MACI" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ MARK" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ NION" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ SEGO" Then Me.Zone = "SEGOU-NIONO-MACINA" Else
If mid(Me.Nom_PDV, 1, 23) = "SKY BUSINESS KIOSQUE KA" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ KADI" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ NION" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ SIKA" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS KQ ZEGO" Or mid(Me.Nom_PDV, 1, 20) = "SKY BUSINESS SIKASSO" Or mid(Me.Nom_PDV, 1, 23) = "SKY BUSNESS KIOSQUE KAD" Or mid(Me.Nom_PDV, 1, 20) = "SKYB KQ KADIOLO SKY " Then Me.Zone = "SIKASSO-KADIOLO"
Num_PDV = Num_PDV + 1
Wend

End Sub


je veux qu'en cliquant sur le bouton que le traitement soit fait automatique pour chaque enregistrement testé de la table.
Mon code ci-haut fait le traitement mais pas automatique. Car il faut avancer enregistrement par enregistrement ensuite cliquez sur le bouton pour que le traitement soit fait. alors que j'ai 500 enregistrement dans ma table à parcourir .tres penible de l'aide!!!!!!

EDIT: Ajout de la coloration syntaxique.

10 réponses

  1. Bonjour mon ami,
    Je tiens vraiment à vous remercier car vous m'avez enlevé des épines sous le pied. Le traitement est bon .
    Vive le forum CCM.
    Cordialement,
    1. Bonjour F894009,
      J'ai testé le code envoyé par vos soins. En cliquant sur le bouton le traitement désiré n'est pas effectué alors qu'il n'y a pas d'erreur dans le code.
      Merci de me dire comment vous envoyer la base car dans les MP du CCM on ne peut pas joindre un fichier.
      Cordialement,
      betacrack
      1. Bonjour F894009,
        Je vais testé le code avec le detail : rs.MoveNext et vous revenir. J'avais testé le code sans " rs.MoveNext" mais rien ne passe. puis-je avoir votre email pour vous envoyer la base afin de voir le formulaire utilisé.
        Cordialement,
        1. Bonjour,

          j'avais oublie quelques details. Mais je ne comprends pas comment vous avez fait votre formulaire, parce que normalement, vous ne devriez pas avoir besoin de bouton pour faire cette actulisation de champ formulaire

          Option Compare Database
          
          Sub Commande17_Click()
          Dim Txt As String, Db As Database, rs As recorset, SQL As String
          
          Set Db = CurrentDb
          SQL = "SELECT * FROM MA_TABLE"
          Set rs = Db.OpenRecordset(SQL, dbOpenDynaset, dbReadOnly)
          If Not rs.EOF And rs.BOF Then
              Do While Not rs.EOF
                  Txt = Mid(rs.Fields("Nom_PDV"), 1, 23)     'recuperation partie de champ !!!!!!!!
                  If Txt = "SKY BUSINESS KQ KATI" Or Txt = "SKY BUSINESS KATI DI" Or Txt = "SKY BUSINESS KQ BANC" Or Txt = "SKY BUSINESS KQ BOUG" Or _
                     Txt = "SKY BUSINESS KQ GRAN" Or Txt = "SKY BUSINESS KQ KANG" Or Txt = "SKY BUSINESS KQ LAFI" Or Txt = "SKY BUSINESS KQ SEBE" Or _
                     Txt = "SKY BUSINESS KQ SOTU" Or Txt = "SKY BUSINESS KQ TITI" Or Txt = "SKY BUSNESS KQ DIALA" Or Txt = "SKY BUSNESS KQ DJALA" Then
                      Me.Zone = "BAMAKO"
                      x = x
                  ElseIf Txt = "SKY BUSINESS KQ KAYE" Then
                      Me.Zone = "KAYES"
                  ElseIf Txt = "SKY BUSINESS KITA BO" Or Txt = "SKY BUSINESS KQ KIT" Or Txt = "SKY BUSINESS KQ KITA" Then
                      Me.Zone = "KITA"
                  ElseIf (Txt = "SKY BUSINESS KQ DIEM") Then
                      Me.Zone = "DIEMA"
                  ElseIf Txt = "SKY BUSINESS KQ MACI" Or Txt = "SKY BUSINESS KQ MARK" Or Txt = "SKY BUSINESS KQ NION" Or Txt = "SKY BUSINESS KQ SEGO" Then
                      Me.Zone = "SEGOU-NIONO-MACINA"
                  ElseIf Txt = "SKY BUSINESS KIOSQUE KA" Or Txt = "SKY BUSINESS KQ KADI" Or Txt = "SKY BUSINESS KQ NION" Or Txt = "SKY BUSINESS KQ SIKA" Or _
                              Txt = "SKY BUSINESS KQ ZEGO" Or Txt = "SKY BUSINESS SIKASSO" Or _
                              Txt = "SKY BUSNESS KIOSQUE KAD" Or Txt = "SKYB KQ KADIOLO SKY " Then
                      Me.Zone = "SIKASSO-KADIOLO"
                  End If
                  rs.MoveNext
              Loop
              Set rs = Nothing
              Db.Close
              Set Db = Nothing
          End Sub
          1. bonjour,

            adaptez le nom de la table pour la requete SQL

            Private Sub Commande17_Click()
            Dim Txt As String, Db As Database, rs As recorset, SQL As String
            
            Set Db = CurrentDb
            SQL = "SELECT * FROM MA_TABLE"
            Set rs = Db.OpenRecordset(SQL, dbOpenDynaset, dbReadOnly)
            If Not rs.EOF And rs.BOF Then
                Do While Not rs.EOF
                    Txt = Mid([Nom_PDV], 1, 23)     'recuperation partie de champ !!!!!!!!
                    If Txt = "SKY BUSINESS KQ KATI" Or Txt = "SKY BUSINESS KATI DI" Or Txt = "SKY BUSINESS KQ BANC" Or Txt = "SKY BUSINESS KQ BOUG" Or _
                       Txt = "SKY BUSINESS KQ GRAN" Or Txt = "SKY BUSINESS KQ KANG" Or Txt = "SKY BUSINESS KQ LAFI" Or Txt = "SKY BUSINESS KQ SEBE" Or _
                       Txt = "SKY BUSINESS KQ SOTU" Or Txt = "SKY BUSINESS KQ TITI" Or Txt = "SKY BUSNESS KQ DIALA" Or Txt = "SKY BUSNESS KQ DJALA" Then
                        Me.Zone = "BAMAKO"
                    ElseIf Txt = "SKY BUSINESS KQ KAYE" Then
                        Me.Zone = "KAYES"
                    ElseIf Txt = "SKY BUSINESS KITA BO" Or Txt = "SKY BUSINESS KQ KIT" Or Txt = "SKY BUSINESS KQ KITA" Then
                        Me.Zone = "KITA"
                    ElseIf (Txt = "SKY BUSINESS KQ DIEM") Then
                        Me.Zone = "DIEMA"
                    ElseIf Txt = "SKY BUSINESS KQ MACI" Or Txt = "SKY BUSINESS KQ MARK" Or Txt = "SKY BUSINESS KQ NION" Or Txt = "SKY BUSINESS KQ SEGO" Then
                        Me.Zone = "SEGOU-NIONO-MACINA"
                    ElseIf Txt = "SKY BUSINESS KIOSQUE KA" Or Txt = "SKY BUSINESS KQ KADI" Or Txt = "SKY BUSINESS KQ NION" Or Txt = "SKY BUSINESS KQ SIKA" Or _
                                Txt = "SKY BUSINESS KQ ZEGO" Or Txt = "SKY BUSINESS SIKASSO" Or _
                                Txt = "SKY BUSNESS KIOSQUE KAD" Or Txt = "SKYB KQ KADIOLO SKY " Then
                        Me.Zone = "SIKASSO-KADIOLO"
                    End If
                Loop
                Set rs = Nothing
                Db.Close
                Set Db = Nothing
            End Sub