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

Access Discussion :

Formulaire et état, supprimer les champs vides et remettre en forme [AC-2016]


Sujet :

Access

  1. #1
    Candidat au Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Décembre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2016
    Messages : 9
    Points : 4
    Points
    4
    Par défaut Formulaire et état, supprimer les champs vides et remettre en forme
    Bonjour à tous !

    J'ai un commercial qui prospecte et qui fait entrer des clients.
    Ces clients passent des commandes.
    J'ai besoin de quantifier le nombre de commandes passées par semaine pendant une durée de 15 semaines consécutives.
    J'arrive à extraire les données souhaitées avec une requête analyse croisée qui alimente une table temporaire (puisque je l'efface à chaque changement de consultation client).
    Cette table comporte le champ du nom du client et des champs de 1 à 52 qui correspondent aux semaines de l'année et dans lesquels sont collées les valeurs correspondant au nombre des commandes passées.
    J'ai donc une table qui comporte des champs vides (pour les semaines sans activité) et d'autres qui contiennent le nombre de commandes.

    Exemple :
    nom : Bidule
    1 à 10 : vide
    11 (début de la collaboration) à 20 : les valeurs des semaines passées
    21 à 26 (fin du suivi) : vides pour l'instant mais qui seront remplis dans les semaine suivantes
    27 à 52 : resteront vides … pour ce client !

    Bien sûr, chaque client ne commençant pas à la même date, les valeurs de l'exemple sont totalement variables et se décalent donc tout au long de l'année

    Mon besoin, dans ce cas, pour un état et un formulaire est de ne faire apparaitre que les champs de 11 à 26 (soit 15 semaines), et qu'ils puissent être alignés à partir de la gauche de l'état et du formulaire.
    Quelle que soit la date à laquelle le client commence à passer des commandes, je souhaiterais que le formulaire et l'état commencent à gauche par la première semaine comportant une activité (ce peuvent être n'importe quel champs de 1 à 52)
    Il n'y a aussi qu'un seul client par formulaire et état

    Je ne sais si j'ai été bien clair !!!?

    Si quelqu'un a une idée … je suis preneur !

    Merci d'avance

  2. #2
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Je pense que tu dois faire une requête sélection à partir de la table temporaire. C'est à l'aide de celle-ci que tu vas alimenter ton état.
    Pour la mise en page il te suffit juste d'ouvrir ton état ou ton formulaire en mode création et tu disposes tes éléments comme tu veux.
    Cordialement
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  3. #3
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    Salut
    Pourquoi ne pas mettre 15 champs dans ton etat ( correspondant aux 15 semaines )
    Texte1---->Texte15
    et ensuite par le code VBA "jouer" sur les valeurs des champs sources de ta requête en fonction de la semaine a partir de laquelle tu veux affciher les datas ?
    Me.Texte1.ControlSource = "NumeroDe1ereSemaine" ( nom du champ de ta requete source )
    Me.Texte2.ControlSource = "NumeroDe2emeSemaine"
    etc...
    et ceci bien sur a l'ouverture de ton état.
    En espérant t'avoir donner une piste.
    ++

  4. #4
    Candidat au Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Décembre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2016
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Merci pour ces réponses !

    Citation Envoyé par james68 Voir le message
    Salut
    Pourquoi ne pas mettre 15 champs dans ton etat ( correspondant aux 15 semaines )
    Texte1---->Texte15
    et ensuite par le code VBA "jouer" sur les valeurs des champs sources de ta requête en fonction de la semaine a partir de laquelle tu veux affciher les datas ?
    Me.Texte1.ControlSource = "NumeroDe1ereSemaine" ( nom du champ de ta requete source )
    Me.Texte2.ControlSource = "NumeroDe2emeSemaine"
    etc...
    et ceci bien sur a l'ouverture de ton état.
    En espérant t'avoir donner une piste.
    ++
    Ce serait en effet l'esprit !
    La table temporaire est vidée et remplie à chaque changement de client dans une liste déroulante d'un autre formulaire.
    J'ai donc invariablement tous les champs de semaine de 1 à 52 et nommés comme tels, la difficulté est donc de pouvoir sélectionner la première semaine et de les coller dans le formulaire ou l'état !
    Ci après, 2 exemples pour lesquels la première semaine est différente, la difficulté est bien de faire correspondre dans le 1er, la Semaine 1 avec la valeur S11 de la table et dans le 2ème la Semaine 1 avec la valeur S17

    Nom : Exemple.JPG
Affichages : 334
Taille : 144,6 Ko

  5. #5
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    Slt
    Brut de décoffrage...pas eu le temps de faire la dentelle...
    regarde le fichier joint si ca peux correspondre a tes besoins ...
    j'ai fait ca a partir de la semaine 10 et sur 5 semaines...
    après il faut encore peaufiner...
    ++
    Fichiers attachés Fichiers attachés

  6. #6
    Candidat au Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Décembre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2016
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par james68 Voir le message
    Slt
    Brut de décoffrage...pas eu le temps de faire la dentelle...
    regarde le fichier joint si ca peux correspondre a tes besoins ...
    j'ai fait ca a partir de la semaine 10 et sur 5 semaines...
    après il faut encore peaufiner...
    ++
    Un grand merci !
    J'avais besoin de faire apparaitre les 15 semaines, de les aligner à gauche et de situer la semaine en cours
    J'ai donc procédé comme suit (c'est très certainement perfectible … peut être avec une boucle !?) :

    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
    Private Sub Form_Open(Cancel As Integer)
    Dim Sdeb As Integer
    Dim Sday As Variant
     
    'Extrait les valeurs de référence
     
            Sdeb = DFirst("debut", "TMP_suivi_fidelisation_croisee")
            Sday = Format(Now(), "ww", vbMonday, vbFirstFourDays)
     
    'Prépare les valeurs à renvoyer
     
            s1lib = Sdeb
            s2lib = Sdeb + 1
            s3lib = Sdeb + 2
            s4lib = Sdeb + 3
            s5lib = Sdeb + 4
            s6lib = Sdeb + 5
            s7lib = Sdeb + 6
            s8lib = Sdeb + 7
            s9lib = Sdeb + 8
            s10lib = Sdeb + 9
            s11lib = Sdeb + 10
            s12lib = Sdeb + 11
            s13lib = Sdeb + 12
            s14lib = Sdeb + 13
            s15lib = Sdeb + 14
     
    'Colle les valeurs
     
            Me.Controls("S1").ControlSource = s1lib
            Me.Controls("S2").ControlSource = s2lib
            Me.Controls("S3").ControlSource = s3lib
            Me.Controls("S4").ControlSource = s4lib
            Me.Controls("S5").ControlSource = s5lib
            Me.Controls("S6").ControlSource = s6lib
            Me.Controls("S7").ControlSource = s7lib
            Me.Controls("S8").ControlSource = s8lib
            Me.Controls("S9").ControlSource = s9lib
            Me.Controls("S10").ControlSource = s10lib
            Me.Controls("S11").ControlSource = s11lib
            Me.Controls("S12").ControlSource = s12lib
            Me.Controls("S13").ControlSource = s13lib
            Me.Controls("S14").ControlSource = s14lib
            Me.Controls("S15").ControlSource = s15lib
     
     
    'Change la couleur de fond de la case de la semaine en cours
     
            If Me.Controls("S1").ControlSource = Sday Then
                Me.Controls("S1").BackColor = 13434879
            End If
     
            If Me.Controls("S2").ControlSource = Sday Then
                Me.Controls("S2").BackColor = 13434879
            End If
     
            If Me.Controls("S3").ControlSource = Sday Then
                Me.Controls("S3").BackColor = 13434879
            End If
     
            If Me.Controls("S4").ControlSource = Sday Then
                Me.Controls("S4").BackColor = 13434879
            End If
     
            If Me.Controls("S5").ControlSource = Sday Then
                Me.Controls("S5").BackColor = 13434879
            End If
     
            If Me.Controls("S6").ControlSource = Sday Then
                Me.Controls("S6").BackColor = 13434879
            End If
     
            If Me.Controls("S7").ControlSource = Sday Then
                Me.Controls("S7").BackColor = 13434879
            End If
     
            If Me.Controls("S8").ControlSource = Sday Then
                Me.Controls("S8").BackColor = 13434879
            End If
     
            If Me.Controls("S9").ControlSource = Sday Then
                Me.Controls("S9").BackColor = 13434879
            End If
     
            If Me.Controls("S10").ControlSource = Sday Then
                Me.Controls("S10").BackColor = 13434879
            End If
     
            If Me.Controls("S11").ControlSource = Sday Then
                Me.Controls("S11").BackColor = 13434879
            End If
     
            If Me.Controls("S12").ControlSource = Sday Then
                Me.Controls("S12").BackColor = 13434879
            End If
     
            If Me.Controls("S13").ControlSource = Sday Then
                Me.Controls("S13").BackColor = 13434879
            End If
     
            If Me.Controls("S14").ControlSource = Sday Then
                Me.Controls("S14").BackColor = 13434879
            End If
     
            If Me.Controls("S15").ControlSource = Sday Then
                Me.Controls("S15").BackColor = 13434879
            End If
     
    End Sub
    Et ça donne ça :
    Nom : Capture2.JPG
Affichages : 279
Taille : 23,7 Ko

  7. #7
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Février 2013
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2013
    Messages : 328
    Points : 477
    Points
    477
    Par défaut
    oui avec une boucle for to next ca serait plus propre et moins fastidieux a ecrire.
    dans l'exemple queje t'ai transmis c'est le cas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For i = SemaineDebut To SemaineDebut + 5
        Me.Controls("s" & i & "Lib").ControlSource = "S" & i
        Me.Controls("Etiq" & i).Caption = "S" & i
    Next i
    Si tu as trouvé ta solution , n'oublie pas de mettre en "résolu"... merci.
    Si tu as d'autres question a ce sujet n'hesite pas.
    Si on peux aider...
    A plus et bon courage.
    PS : pour les couleurs , une mise en forme conditionnelle serait plus judicieuse et éviterait toutes tes boucles If..Then (temps de traitement plus long).

  8. #8
    Candidat au Club
    Homme Profil pro
    Conseil en assistance à maîtrise d'ouvrage
    Inscrit en
    Décembre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Conseil en assistance à maîtrise d'ouvrage
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2016
    Messages : 9
    Points : 4
    Points
    4
    Par défaut
    Merci James,
    C'est en effet bien plus propre !!!

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

Discussions similaires

  1. Comment supprimer les champs vides ?
    Par Christian_Bale dans le forum Cognos
    Réponses: 3
    Dernier message: 03/05/2012, 09h58
  2. [MVC] Supprimer les champs d'un formulaire dans un contrôleur
    Par daydream123 dans le forum Spring Web
    Réponses: 2
    Dernier message: 24/06/2011, 20h43
  3. DataTable : comment supprimer les champs vides ?
    Par Leelith dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/02/2010, 23h14
  4. LIKE et les champs vide
    Par XioN dans le forum Bases de données
    Réponses: 4
    Dernier message: 09/08/2004, 16h24
  5. tri avec les champs vides en dernier
    Par r-zo dans le forum Requêtes
    Réponses: 11
    Dernier message: 03/09/2003, 13h40

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