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,

    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
    0
    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
      0
      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,
        0
        1. Re,

          Passez par les MP (message prive de CCM)
          0
          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
            0
            1. Re,

              les MP du CCM on ne peut pas joindre un fichier. Ah! que si
              0
              1. Bonjour F894009,
                Merci de recevoir le lien de téléchargement ci-dessous de ma base pour analyse:
                https://www.cjoint.com/c/EFyhMzdKdJI
                NB: la base est en access2003
                Cordialement,
                0
                1. Bonjour,

                  Vous voulez mettre a jour la table en fonction des tests ???
                  0
              2. Exact.
                0
                1. Re,

                  Ok, je regrde la chose

                  A+
                  0
              3. 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,
                0