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

Contribuez Discussion :

Modélisation des liaisons entre userform et table de données Excel (tableau structuré)


Sujet :

Contribuez

  1. #21
    Nouveau membre du Club
    Homme Profil pro
    secrétaire
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : secrétaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Il faut mettre le IsModified en Public.

    Dès lors, après le chargement, on peut le basculer à False

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub ShowCityForm()
      With usfCity
        .DataManager.Map = getMap1("usfCity")
        .DataManager.Table = Range("t_Localités").ListObject
        If .DataManager.GotoRecord(1) = 0 Then
          .tboIndex = 1
          .DataManager.updateUserform
          .IsModified = False
        End If
        .Show
      End With
      Unload usfCity
    End Sub

    Attention, il faut aussi le basculer à False à la fin de la procédure btnSave

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub btnSave_Click()
      With mDataManager
        .UpdateTable
        tboIndex = .Index
      End With
      IsModified = False
    End Sub
    Ca devrait être ok
    J'ai tenté cette méthode, mais dès que j'ai un cb_box qui est déja rempli de part le tableau, j'ai l'avertissement même si je n'ai rien changé.

    Voici ma procédure dans le Module1 :
    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
    Sub ShowSuiviForm(Optional Target As Range)
     
      With usfSuivi
      .DataManager.Init Range("Tableau1"), usfSuivi, getMap1("usfSuivi")
     
      'remplissage des combobox
      If Not Target Is Nothing Then .DataManager.GotoIndexFromCell Target
      .cb_genre.List = Range("t_genre").Value
      .cb_b3_origine.List = Range("t_b3_cdas").Value
      .cb_e1_hebergement_anterieur.List = Range("t_e1_hebergement").Value
      .cb_e2_hebergement_sortie.List = Range("t_e2_hebergement").Value
      .cb_f1.List = Range("t_f_mesures").Value
      .cb_f2.List = Range("t_f_mesures").Value
      .cb_f3.List = Range("t_f_mesures").Value
      .cb_g1.List = Range("t_g1").Value
      .cb_g2.List = Range("t_g2").Value
      .cb_g3.List = Range("t_g3").Value
      .cb_h1.List = Range("t_h1").Value 'un seul tableau H scolarité
      .cb_h2.List = Range("t_h1").Value
      .cb_h3.List = Range("t_h1").Value
      .cb_i1_1.List = Range("t_oui_non").Value
      .cb_i1_2.List = Range("t_oui_non").Value
      .cb_i2_1.List = Range("t_oui_non").Value
      .cb_i2_2.List = Range("t_oui_non").Value
      .cb_i2_3.List = Range("t_oui_non").Value
      .cb_i4_1.List = Range("t_oui_non").Value
      .cb_i4_2.List = Range("t_oui_non").Value
      .cb_i4_3.List = Range("t_oui_non").Value
      .cb_i4_4.List = Range("t_oui_non").Value
      .cb_i4_5.List = Range("t_oui_non").Value
      .cb_i6_1.List = Range("t_oui_non").Value
      .cb_i6_2.List = Range("t_oui_non").Value
      .cb_i7.List = Range("t_oui_non").Value
     
        .IsModified = False
        .Show
      End With
      Unload usfSuivi
    End Sub
    La variable public IsModified, faut bien la mettre dans le UserForm?

  2. #22
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Je vais regarder les deux points ce soir
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #23
    Nouveau membre du Club
    Homme Profil pro
    secrétaire
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : secrétaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Je vais regarder les deux points ce soir
    Bonsoir,

    Je viens aux nouvelles. Avez vous pu étudier une solution pour l'avertissement de données non sauvegardées?

  4. #24
    Nouveau membre du Club
    Homme Profil pro
    secrétaire
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : secrétaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    Je crois que j'ai réussi à faire en sorte que ça fonctionne pour l'avertissement de données non sauvegardées.

    Dans le code du userform :
    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
    Private Sub btnNext_Click()
      Dim Result As Long
     
    If IsModified Then SaveQuitCancel
     
      With mDataManager
        Result = .GoToNext()
        tboIndex = .Index
      End With
      If Result = 1 Then MsgBox "Vous êtes au dernier enregistrement"
    End Sub
     
    Private Sub btnSave_Click()
      With mDataManager
        .UpdateTable
        tboIndex = .Index
      End With
     
      IsModified = False
     
    End Sub
     
    Private Sub SaveQuitCancel()
      Dim Result As VbMsgBoxResult
     
      Result = MsgBox("Voulez-vous enregistrer les données?", vbYesNoCancel, "Mon application")
      Select Case Result
        Case vbYes
          btnSave_Click
        Case vbNo
     
      End Select
      IsModified = (Result = vbCancel)
    End Sub
     
    Private Sub cb_b3_origine_Change()
    IsModified = True
    End Sub
     
    Private Sub cb_e1_hebergement_anterieur_Change()
    IsModified = True
    End Sub
     
     
    // etc pour tous les combobox etc
    Dans le module1 :
    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
    Public IsModified As Boolean
     
    Sub ShowSuiviForm(Optional Target As Range)
     
      With usfSuivi
      .DataManager.Init Range("Tableau1"), usfSuivi, getMap1("usfSuivi")
     
      'remplissage des combobox
      If Not Target Is Nothing Then .DataManager.GotoIndexFromCell Target
      .cb_genre.List = Range("t_genre").Value
      .cb_b3_origine.List = Range("t_b3_cdas").Value
      .cb_e1_hebergement_anterieur.List = Range("t_e1_hebergement").Value
      .cb_e2_hebergement_sortie.List = Range("t_e2_hebergement").Value
      .cb_f1.List = Range("t_f_mesures").Value
      .cb_f2.List = Range("t_f_mesures").Value
      .cb_f3.List = Range("t_f_mesures").Value
      .cb_g1.List = Range("t_g1").Value
      .cb_g2.List = Range("t_g2").Value
      .cb_g3.List = Range("t_g3").Value
      .cb_h1.List = Range("t_h1").Value 'un seul tableau H scolarité
      .cb_h2.List = Range("t_h1").Value
      .cb_h3.List = Range("t_h1").Value
      .cb_i1_1.List = Range("t_oui_non").Value
      .cb_i1_2.List = Range("t_oui_non").Value
      .cb_i2_1.List = Range("t_oui_non").Value
      .cb_i2_2.List = Range("t_oui_non").Value
      .cb_i2_3.List = Range("t_oui_non").Value
      .cb_i4_1.List = Range("t_oui_non").Value
      .cb_i4_2.List = Range("t_oui_non").Value
      .cb_i4_3.List = Range("t_oui_non").Value
      .cb_i4_4.List = Range("t_oui_non").Value
      .cb_i4_5.List = Range("t_oui_non").Value
      .cb_i6_1.List = Range("t_oui_non").Value
      .cb_i6_2.List = Range("t_oui_non").Value
      .cb_i7.List = Range("t_oui_non").Value
     
        'If .DataManager.GotoRecord(1) = 0 Then
        '  .tboIndex = 1
        'End If
     
        .Show
      End With
      IsModified = False
      Unload usfSuivi
    End Sub

    Dans le module de classe DataUSFManager :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub updateUserform()
      Dim r As ListRow
      Dim Counter As Long
      Dim ControlName As String
      Dim ColumnName As String
     
      Set r = mTable.ListRows(mIndex)
      For Counter = 1 To UBound(mMap)
        mUsf.Controls(mMap(Counter, 1)).Value = r.Range(mTable.ListColumns(mMap(Counter, 2)).Index).Value
      Next
    IsModified = False
    End Sub
    Et je crois que c'est bon

    Reste le problème de date, mais moins problématique dans mon cas particulier, mais si la solution est apportée, je prends, et ça sera sans doute utile pour d'autres.

  5. #25
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Un peu pris sur d'autres feux... Je vais essayer de me pencher dessus ce soir. Bravo pour la ténacité et la solution (que je n'ai pas testé mais si elle fonctionne, c'est super).
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #26
    Nouveau membre du Club
    Homme Profil pro
    secrétaire
    Inscrit en
    Décembre 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : secrétaire

    Informations forums :
    Inscription : Décembre 2014
    Messages : 48
    Points : 28
    Points
    28
    Par défaut
    Oui, je comprends bien. On est beaucoup à avoir besoin de journée de 28h

    Je ne suis pas certain que ma solution soit optimale, mes connaissances en VBA sont bien limitées comparées aux votre, mais avec un peu de volonté, j'arrive à sortir quelques trucs.

  7. #27
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    La première "obligation" est une obligation de résultat (Tant que ça fonctionne, c'est ok). Après, on affine l'approche petit à petit au fur et à mesure que l'on monte en puissance. Lorsque je revois mes premiers codes, j'aurais honte si je ne me souvenais pas que j'étais autodidacte
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #28
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    Hello,
    Citation Envoyé par punk_sportif Voir le message
    Je ne suis pas certain que ma solution soit optimale, mes connaissances en VBA sont bien limitées comparées aux votre, mais avec un peu de volonté, j'arrive à sortir quelques trucs.
    Je propose une autre solution pour contrôler si des données ont été modifiées dans le formulaire de la table.
    Le principe :
    On crée une fonction dans laquelle on compare le contenu des champs mappés par rapport aux données du tableau structuré.
    Il suffit de reprendre le code de la procédure UpdateTable du DataUSFManager et de faire une comparaison au lieu d'une affectation :
    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
    Function CtrlTableModified() As Boolean
      Dim r As ListRow
      Dim Counter As Long
      CtrlTableModified = False
      If mIndex = 0 Then
        mTable.ListRows.Add
        mIndex = mTable.ListRows.Count
      End If
      Set r = mTable.ListRows(mIndex)
      For Counter = 1 To UBound(mMap)
        If Not CStr(r.Range(mTable.ListColumns(mMap(Counter, 2)).Index).Value) = _
                    mUsf.Controls(mMap(Counter, 1)).Value Then
           CtrlTableModified = True
        End If
      Next
    End Function
    A noter que pour la comparaison j'utilise une conversion en chaîne (Cstr) du côté Tableau car sinon cela ne fonctionne pas si dans le tableau il y a des nombres (par rapport à la chaîne d'un TextBox).
    Exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub BtnCancel_Click()
       If Me.DataManager.CtrlTableModified Then
       MsgBox "Données modifiées non sauvegardées !"
       Else
        Unload Me
       End If
    End Sub
    J'ai d'autres idées pour étoffer la classe DataUSFManager de Pierre :
    1 - Une méthode qui crée le tableau de mappage presqu'automatiquement en listant tous les champs du formulaire de type textbox, combobox, listbox, optionbutton.
    Exemple :
    Nom : MapAuto.PNG
Affichages : 153
Taille : 20,4 Ko


    2 - Des fonctions de recherche en fonction d'un ou plusieurs critères.
    Si cela vous intéresse dites-moi si vous voulez que je publie le code ici ou ailleurs (où ?).

    Et pour le problème à j.gui :
    Citation Envoyé par j.gui Voir le message
    J'ai donc recherché comment passer votre code modal en non modal...ils disent rajouter un 0 à .Show, j'ai donc mis dans votre procédure de lancement : ".Show 0"
    et la votre userform...et donc le mien aussi...apparait (du moins le cadre) pour disparaitre aussitôt
    Y a t'il donc une solution pour pouvoir avec la possibilité d'utiliser en // du Userform un autre fichier Excel
    c'est tout simple derrière le Show 0 il ne faut plus faire un Unload. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        .Show  0
    End With
      'Unload usfContact
    End Sub
    Mais attention avoir le formulaire et le tableau structuré modifiables en même temps peut-être dangereux !



    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  9. #29
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Je ne suis pas partisan de cette solution.

    Le contrôle des modifications (voir s'il y a eu modif) revient exclusivement au userform et il est équipé pour cela. Une variable privée du userform peut être valorisée sur les évènements Change ou Click des contrôles, qui peuvent d'ailleurs être colorés d'une manière ou d'une autre lors de la modif. Si modif dans le formulaire, on modifie alors la ligne correspondante du tableau structuré.

    C'est un principe de bonne architecture de code qui permet de circonscrire les responsabilités. Le userform a la responsabilité de signaler une modif, le DataManager a la responsabilité de gérer le transfert des données dans les deux sens entre le userform et le tableau structuré, pas de vérifier que ce transfert doit avoir lieu.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  10. #30
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Je ne suis pas partisan de ta méthode 1 pour "automatiser le mappage" car cela oblige à avoir des contrôles qui sont nommés en fonction des entêtes du tableau structuré. Or, le DataManager est JUSTEMENT là pour découpler les deux.

    Si on fait correspondre les noms des contrôles à ceux des entêtes (avec ou sans préfixe), on n'a plus besoin du data manager. Donc oui, ta solution est fonctionnelle, mais pas pour moi à cause de ce couplage fort que le DataManager est justement censé éviter.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #31
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    Hello Pierre,
    Citation Envoyé par Pierre Fauconnier Voir le message
    Je ne suis pas partisan de ta méthode 1 pour "automatiser le mappage" car cela oblige à avoir des contrôles qui sont nommés en fonction des entêtes du tableau structuré. Or, le DataManager est JUSTEMENT là pour découpler les deux
    Si on fait correspondre les noms des contrôles à ceux des entêtes (avec ou sans préfixe), on n'a plus besoin du data manager. Donc oui, ta solution est fonctionnelle, mais pas pour moi à cause de ce couplage fort que le DataManager est justement censé éviter.
    Non cela ne fonctionne pas comme cela, comme je l'ai indiqué la génération est semi-automatique . les contrôles n'ont pas besoin d'avoir le même nom que les colonnes du tableau. Si tu regardes bien ma copie d'écran dans la colonne Colonne dans chaque cellule il y a une liste avec la liste des colonnes du tableau structuré. Pour chaque contrôle il faut mapper avec la colonne du tableau structuré correspondant. Et puis si on ne veut pas tous les contrôles, on supprime les lignes avec les contrôles que l'on ne veut pas. Le but en fait est de simplifier la saisie de la table de Mappage surtout lorsqu'il y a beaucoup de contrôles.
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  12. #32
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut JP,

    Je n'ai pas relu toute la discussion, mais il me semble que suite à une intervention de Philippe Tulliez, j'avais proposé un tableau structuré pour le mappage. C'est pour moi la meilleure des solutions pour donner toute la souplesse voulue au datamanager. Ainsi, on a une seule table de mappage pour toutes les paires Formulaire/Tableau.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #33
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 953
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 953
    Points : 9 283
    Points
    9 283
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut JP,

    Je n'ai pas relu toute la discussion, mais il me semble que suite à une intervention de Philippe Tulliez, j'avais proposé un tableau structuré pour le mappage. C'est pour moi la meilleure des solutions pour donner toute la souplesse voulue au datamanager. Ainsi, on a une seule table de mappage pour toutes les paires Formulaire/Tableau.
    Et donc en fait j'utilise ton getmap1 et donc le même mécanisme, la différence c'est qu'au lieu de créer la table de mappage de A à Z , elle est créée semi automatiquement un genre de wizard. Mais cela n'est utile qu'en cas d'utilisation de beaucoup de contrôles comme dans mon exemple.
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  14. #34
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Avec la liste déroulante pour les colonnes dans le tableau structuré, tu ne peux utiliser ta table de mappage que pour une paire usf/tableau. C'est un choix conceptuel, mais dans le cas où l'on aurait une dizaine ou une vingtaine de tableaux, il faudrait autant de tables de mappage dans Excel, sauf lorsque la fonction VSTACK sera disponible. Elle est en tests sur la version Insider pour le moment. Cela dit, ce ne sera guère pratique pour la sélection de la colonne du bon tableau si on a beaucoup de tableaux avec beaucoup de colonnes.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. SELECT depuis une table de liaison entre 2 mêmes tables
    Par Pedro dans le forum Langage SQL
    Réponses: 9
    Dernier message: 10/04/2013, 17h16
  2. [XL-2007] Problème Méthode de Liaison entre Userform
    Par Garruth dans le forum Excel
    Réponses: 4
    Dernier message: 05/03/2012, 14h22
  3. Réponses: 13
    Dernier message: 22/08/2009, 15h53
  4. Réponses: 1
    Dernier message: 03/03/2009, 12h41
  5. Liaison entre Access et tables Oracle
    Par lerico dans le forum Modélisation
    Réponses: 1
    Dernier message: 05/09/2008, 15h35

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