IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Deuxieme boucle Do While qui ne s'execute pas


Sujet :

VBA Access

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut Deuxieme boucle Do While qui ne s'execute pas
    Bonjour à tous

    Comme dit dans le titre la deuxième boucle ("Boucle remplissage des cellules") sensée remplir cellule par cellule une valeur de champ ne s’exécute pas dans la fonction suivante tandis que la première créé bien les étiquettes et leur nommage . Même le compteur J ne renvoie aucune valeur ...

    Merci de m'aiguiller

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    Option Compare Database
    Option Explicit
     
    Public Function CreerEtiquettesPlanning()
     
    Dim Hauteur As Integer
    Dim Largeur As Integer
    Dim NouvellePosition As Integer
    Dim Espacement As Integer
    Dim NbLignes As Integer
    Dim DateDuJour As Date
    Dim DernierJourMois As Date
    Dim rstTableHoraire As DAO.Recordset
    Dim ColHoraires, ColLundi, ColMardi, ColMercredi, ColJeudi, ColVendredi, ColSamedi, ColDimanche As Control
    Dim LargeurChampsHoraires, LargeurMargeHoraires As Integer
    Dim rstRendezVous As DAO.Recordset
    Dim CréneauActif As Field
     
     
     
    Dim i, j As Integer
     
     
    Set rstTableHoraire = CurrentDb.OpenRecordset("t_horaires_intervenants")
    Set rstRendezVous = CurrentDb.OpenRecordset("rq_rendez_vous_jour")
     
    Hauteur = 600
    LargeurMargeHoraires = 600
    LargeurChampsHoraires = 2000
    Espacement = 100
     
    DernierJourMois = DateSerial(Year(Date), Month(Date) + 1, 0)
     
    'Effacer tous les contrôles créés précédement
     
    DoCmd.OpenForm "essai etiquettes", acDesign, , , , acHidden
     
     
        While Forms![essai etiquettes].Controls.Count > 0
            DeleteControl "essai etiquettes", Forms![essai etiquettes].Controls(0).Name
        Wend
     
        DoCmd.Close acForm, "essai etiquettes", acSaveYes 'on ferme le formulaire
     
    'Création des nouvelles etiquettes des créneaux
     
    DoCmd.OpenForm ("essai etiquettes"), acDesign, , , , acHidden
     
     
    'Boucle pour la création des Etiquettes de créneaux verticales pour chaque jour
     
        Do While Not rstTableHoraire.EOF
     
            i = i + 1
     
            Set ColHoraires = CreateControl("Essai etiquettes", acLabel, acDetail)
            Set ColLundi = CreateControl("essai etiquettes", acTextBox, acDetail)
            Set ColMardi = CreateControl("essai etiquettes", acTextBox, acDetail)
            Set ColMercredi = CreateControl("essai etiquettes", acTextBox, acDetail)
            Set ColJeudi = CreateControl("essai etiquettes", acTextBox, acDetail)
            Set ColVendredi = CreateControl("essai etiquettes", acTextBox, acDetail)
            Set ColSamedi = CreateControl("essai etiquettes", acTextBox, acDetail)
            Set ColDimanche = CreateControl("essai etiquettes", acTextBox, acDetail)
     
            With ColHoraires
     
     
                .Name = "Horaire " & i
                .Left = Espacement
                .Top = 10 + (Hauteur * i)
                .Width = LargeurMargeHoraires
                .Height = Hauteur
                .Caption = Format(rstTableHoraire!heure, "h:mm")
                .TextAlign = 3
     
     
            End With
     
            With ColLundi
     
                .Name = "Créneau Lundi " & i
                .Left = LargeurMargeHoraires + Espacement
                .Top = 10 + (Hauteur * i)
                .Width = LargeurChampsHoraires
                .Height = Hauteur
                .BackColor = RGB(255, 255, 224)
                .TextAlign = 2
                .TextFormat = 1
     
            End With
     
            With ColMardi
     
                .Name = "Créneau Mardi " & i
                .Left = LargeurChampsHoraires + LargeurMargeHoraires + Espacement
                .Top = 10 + (Hauteur * i)
                .Width = LargeurChampsHoraires
                .Height = Hauteur
            .BackColor = RGB(255, 255, 224)
             .TextAlign = 2
                .TextFormat = 1
     
            End With
     
            With ColMercredi
     
                .Name = "Créneau Mercredi " & i
                .Left = LargeurChampsHoraires * 2 + LargeurMargeHoraires + Espacement + 10
                .Top = 10 + (Hauteur * i)
                .Width = LargeurChampsHoraires
                .Height = Hauteur
            .BackColor = RGB(255, 255, 224)
             .TextAlign = 2
                .TextFormat = 1
     
            End With
     
            With ColJeudi
     
                .Name = "Créneau Jeudi " & i
                .Left = LargeurChampsHoraires * 3 + LargeurMargeHoraires + Espacement + 10
                .Top = 10 + (Hauteur * i)
                .Width = LargeurChampsHoraires
                .Height = Hauteur
                .BackColor = RGB(255, 255, 224)
                .TextAlign = 2
                .TextFormat = 1
     
            End With
     
            With ColVendredi
     
                .Name = "Créneau Vendredi " & i
                .Left = LargeurChampsHoraires * 4 + LargeurMargeHoraires + Espacement + 10
                .Top = 10 + (Hauteur * i)
                .Width = LargeurChampsHoraires
                .Height = Hauteur
                .BackColor = RGB(255, 255, 224)
                .TextAlign = 2
                .TextFormat = 1
            End With
     
            With ColSamedi
     
                .Name = "Créneau Samedi " & i
                .Left = LargeurChampsHoraires * 5 + LargeurMargeHoraires + Espacement + 10
                .Top = 10 + (Hauteur * i)
                .Width = LargeurChampsHoraires
                .Height = Hauteur
                .BackColor = RGB(255, 255, 224)
                .TextAlign = 2
                .TextFormat = 1
     
            End With
     
            With ColDimanche
     
                .Name = "Créneau Dimanche " & i
                .Left = LargeurChampsHoraires * 6 + LargeurMargeHoraires + Espacement + 10
                .Top = 10 + (Hauteur * i)
                .Width = LargeurChampsHoraires
                .Height = Hauteur
                .BackColor = RGB(224, 255, 255)
                .TextAlign = 2
                .TextFormat = 1
     
            End With
     
     
        rstTableHoraire.MoveNext
        Loop
     
     
        DoCmd.OpenForm ("essai etiquettes")
     
     
        'Boucle Remplissage des cellules
     
        Do While Not rstTableHoraire.EOF
     
            j = j + 1
     
          CréneauActif = "Créneau Lundi " & j
          Debug.Print j
     
          Forms("essai etiquettes")!['"& CréneauActif &'"] = "oui"
     
         rstTableHoraire.MoveNext
         Loop
     
     
       DoCmd.Save acForm, "essai etiquettes"
     
    Set rstTableHoraire = Nothing
    Set rstRendezVous = Nothing
     
    End Function

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Bonjour,

    Il manque un movefirst avant d'attaquer la 2e boucle
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Merci Nico mais cela ne change rien... D'ailleurs si je mets un movefirst aussi dans la première boucle une erreur apparaît au moment de la création des étiquettes alors que sans tout va bien.

    Je continue donc à avoir la deuxième boucle qui ne s'éxécute pas

    Merci d'avance pour toute aide

  4. #4
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 087
    Points : 5 203
    Points
    5 203
    Par défaut
    Ah ben si forcément quand il arrive à la 2e boucle rstTableHoraire.EOF est vrai donc il va direct à la suite
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 092
    Points : 268
    Points
    268
    Par défaut
    Bonjour Nico

    Finalement j'ai opté pour faire 2 fonctions séparées ce qui offre une plus grande facilité de lecture.
    D'autre part je m'étais trompé dans la déclaration de la variable CréneauActif en tant que "field", en la déclarant en tant que "control" tout est rentré dans l'ordre et la boucle s'est exécutée normalement.

    Pendant que j'y suis et si tu as le temps pourrais tu regarder mon récent post concernant les fonctions imbriquées ? , personne n'y répond ...

    Merci pour tout

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Boucle do while qui fini mal en general
    Par grostathar dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2012, 13h44
  2. [PHP 5.2] Boucle While qui ne s'arrete pas
    Par Pierrea4564 dans le forum Langage
    Réponses: 3
    Dernier message: 18/11/2011, 08h59
  3. [AC-2003] Boucle While .. Wend sur un recordset qui ne s'execute pas
    Par mamadouabd dans le forum VBA Access
    Réponses: 6
    Dernier message: 24/11/2009, 20h00
  4. boucle while qui ne s'arrete pas à la lecture d'un zero
    Par malikoo dans le forum Général Python
    Réponses: 14
    Dernier message: 04/07/2007, 10h48
  5. [FLASH 8] Un trace qui ne s'execute pas ?
    Par memess dans le forum Flash
    Réponses: 13
    Dernier message: 30/11/2005, 15h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo