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

VB.NET Discussion :

Ajouter deux colonnes aux DataGridView


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut Ajouter deux colonnes aux DataGridView
    Bonjour tout le monde
    Svp j'ai vraiment besoin d'aide pour resoudre ce probleme
    Dans ma Form1 .. j'ai ComboBox1 remplit par cette liste de 1 a 12 ( 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 -12) et ComboBox2 remplit par des annees ( 2022 - 2023 - 2024 - 2025 - 2026 - 2027 - 2028 - 2029 - 2030 ) et DataGridView1 tout vide .
    Je choisis le mois par ComboBox1 et ensuite lorsque je choisis l'annee par ComboBox 2 .. les jours du mois choisit seront affiches dans une ligne du DataGridView1 .. comme l'indique cette image
    Nom : 1.png
Affichages : 604
Taille : 6,8 Ko
    Je veux ajouter deux colonnes .. une colonne pour ( code employe ) et une colonne pour ( nom employe ) au debit du DataGridView1 .. j'ai trop essaye mais sans resultat
    Voici tout le code dans ma Form1
    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
    Public Class Form1
        Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox2.SelectedIndexChanged
            Dim MyDay() As String = {"Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"}
            If ComboBox1.Text <> Nothing And ComboBox2.Text <> Nothing Then
                Dim D1 As Date = DateValue("1/" & ComboBox1.Text & "/" & ComboBox2.Text)
                Dim D2 As Date
                If Val(ComboBox1.Text) < 12 Then
                    D2 = DateValue("1/" & Val(ComboBox1.Text) + 1 & "/" & ComboBox2.Text)
                Else
                    D2 = DateValue("1/" & "1" & "/" & Val(ComboBox2.Text) + 1)
                End If
                Dim J As Long = DateDiff(DateInterval.Day, D1, D2)
                If DataGridView1.Columns.Count > 0 Then
                    DataGridView1.Columns.Clear()
                End If
                Dim mRow(J) As String
                For i = 1 To J
                    D2 = DateValue(i & "/" & ComboBox1.Text & "/" & ComboBox2.Text)
                    DataGridView1.Columns.Add("Col3", MyDay(Val(D2.DayOfWeek)))
                    mRow(i - 1) = i & "/" & ComboBox1.Text
                Next
                DataGridView1.Rows.Add(mRow)
            Else
                MsgBox("Veuillez sélectionner le mois ou l'année .. svp")
            End If
        End Sub
    End Class
    Merci beaucoup d'avance pour l'aide
    Cordialement
    MADA

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour Mada,

    J'ai peu de temps aujourd'hui pour travailler sur ta question que je suis pas trop sûr de bien comprendre.

    Je comprends que tu utilises un DataGridView pour afficher tous les jours de 1 mois de 1 année, mois et année étant choisis dans des ComboBox.
    En parcourant ton code, je vois que tu crées "manuellement" les colonnes du DataGridView.
    C'est pourquoi je ne comprends pas ce qui t'empêche d'ajouter toutes les colonnes que tu souhaites avant ou après ta boucle d'ajout des colonnes
    ...


  3. #3
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Bonjour cher .. PHIL ROB
    Très ravi de vous rencontrer ici
    J'ai trop essayé d'ajouter deux colonnes vides .. une pour écrire le code d'employé et l'autre pour le nom .. j'ai essayé de faire avec datatable ( dt.columns.add("code-employe") .. et ainsi de suite .. dans le boucle .. hors du boucle .. mais vraiment j'ai pas réussi
    Cordialement
    MADA

  4. #4
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2018
    Messages
    323
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 323
    Par défaut
    Bonsoir,

    j'ai du mal à comprendre ce que vous voulez dire par rapport avec les deux columns que vous voulez ajouter pour le code employer et le nom employer.
    voici en image avec le code employer :
    Nom : Capture d’écran 2022-12-18 173044.png
Affichages : 531
Taille : 10,3 Ko

    voici le code si vous êtes intéresser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .....etc
    DataGridView1.Rows.Add(mRow)
                DataGridView1.Rows.Add()
                For i = 0 To DataGridView1.ColumnCount - 1
                    DataGridView1.Rows(1).Cells(i).Value = "code employer"
                Next
            Else
                MsgBox("Veuillez sélectionner le mois ou l'année .. svp")
            End If
    j’espère que j'ai bien répondu a votre aide.
    cordialement,

  5. #5
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Salut Miska59
    Merci beaucoup pour l'intention d'aide
    J'ai essayé d'expliquer ce que je veux dire avec deux colonnes .. j'ai fais une image excel car j'ai pas pu le faire avec DataGridView
    Les codes et noms d'employes je vais les écrire manuellement .. tous ce que je veux .. c'est ajouter deux colonnes au debut du DataGridView comme l'indique cette image
    Nom : 1.png
Affichages : 539
Taille : 13,9 Ko
    Merci d'avance pour l'aide
    Cordialement
    MADA

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Re bonjour Mada,
    J'écrirai un exemple demain dans l après-midi, sauf tu as reçu un solution entre-temps.
    Bonne soirée

  7. #7
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Merci mille fois d'avance cher PHIL ROB

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Bonjour,

    Je conseille fortement d’utiliser un datatable ou dataview pour le lier au datagridview. Même si le but n'est pas d'enregistrer les données dans une DB. Ça facilite les manipulations.
    Le datatable peut être généré à la volée en fonction de la sélection du combo box, puis lié au DGV de manière dynamique.
    Les exemples ne manquent pas.

    Alimenter manuellement le DGV est une approche boiteuse. Ça implique aussi de devoir extraire les valeurs introduites par l'utilisateur au départ de ce contrôle, alors qu'il serait plus simple de traiter le datatable sous-jacent.
    D'ailleurs que se passe-t-il si vous triez les colonnes après avoir modifié certaines cellules ? Probablement que vos données fichent le camp.

    Il y a un truc qui ne va pas, c'est que vous essayez d'utiliser le DGV comme Excel. La première ligne avec les jours ne devrait même pas apparaître. Au lieu de ça, vous pouvez adapter les headers pour afficher par exemple Mercredi 1/2, etc. au lieu de mettre Mercredi en header et 1/2 sur la première ligne. Et il y a du travail à faire, par exemple désactiver la possibilité d'ajouter de nouvelles lignes, puisque le nombre de jours dans un mois donnée est fixe et connu à l'avance.

    Suggestion ergonomique: si vous voulez afficher un mois complet, vous pourriez opter pour un affichage vertical plutôt qu'horizontal, comme ça il faut moins scroller.
    Par ailleurs, il y a d'autres solutions que le DGV.

    Une solution un peu plus élaborée serait d'utiliser un TableLayoutPanel, avec un nombre de rows variable, et générer un array de contrôles à la volée.
    En gros, un row par jour dans le TableLayoutPanel.
    Demain je vais peut-être au bureau et je peux alors essayer de déterrer un exemple plus concret.

    Sinon voici un exemple basique qui explique comment générer des contrôles windows forms de manière dynamique: http://vb.net-informations.com/gui/d...ontrols-vb.htm
    Le TableLayoutPanel est optionnel en fait mais ça facilite la mise en forme.

    Et sinon faites une recherche avec les mots-clé dynamic controls par exemple.

    J'ai l'impression que votre besoin est assez basique et ne justifie pas forcément un DGV. Je verrais plutôt un array de textboxes, que vous générez de manière dynamique, et puis vous faites une boucle dessus pour récolter et valider les valeurs. Quelque chose dans ce genre.

  9. #9
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Salut binarygirl
    Merci beaucoup pour votre explication détaillée
    Vous avez merveilleusement expliqué et exprimé tout sur le sujet
    Pour moi, je préfère travailler avec DataTable , mais en réalité j'ai essayé beaucoup de tentatives, mais je n'ai pas réussi
    Si possible, s'il vous plaît, et si vous avez le temps, je veux un exemple on utilisant DataTable pour apprendre
    Merci beaucoup d'avance
    Cordialement
    MADA

  10. #10
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour Mada,

    J'ai eu un peu de temps plus tôt que prévu ...

    Vois cette vidéo : https://www.dropbox.com/s/owf19stru1...daDGV.mp4?dl=0

    Je crois que cela fait ce que tu demandes. Voici le projet pour que tu puisses l'essayer à ta guise : DGV_DGV_VB_Base.zip
    Attention, c'est du vite fait, pas forcément la meilleure façon, et sûrement pas la seule.


    J'aurai encore un peu de temps dans la soirée.

    ...

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 547
    Par défaut
    c'est la rowHeader il me semble (mais il ne peut y en avoir qu'une) https://learn.microsoft.com/en-us/do...owsdesktop-7.0

  12. #12
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Citation Envoyé par umfred Voir le message
    c'est la rowHeader il me semble (mais il ne peut y en avoir qu'une) https://learn.microsoft.com/en-us/do...owsdesktop-7.0
    Merci beaucoup pour l'intervention

  13. #13
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Citation Envoyé par Phil Rob Voir le message
    Bonjour Mada,

    J'ai eu un peu de temps plus tôt que prévu ...

    Vois cette vidéo : https://www.dropbox.com/s/owf19stru1...daDGV.mp4?dl=0

    Je crois que cela fait ce que tu demandes. Voici le projet pour que tu puisses l'essayer à ta guise : DGV_DGV_VB_Base.zip
    Attention, c'est du vite fait, pas forcément la meilleure façon, et sûrement pas la seule.


    J'aurai encore un peu de temps dans la soirée.

    ...
    Salut maitre
    Salut PHIL ROB
    Bravo pour l'impeccable solution .. c'est effectivement ce que je veux voir et avoir
    Merci pour la video aussi pour le project .. il ne me reste qu'une seule chose .. comment faire svp pour mettre toutes les colonnes du jours qui correspondant le dimanche .. Backcolor en rouge
    Bravo une deuxieme fois
    Cordialement
    MADA

  14. #14
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Le code suivant répond à ta question à propos des colonnes "dimanche" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Private Sub BColorer_Click(sender As Object, e As EventArgs) Handles BColorer.Click
            ColorerColonne(DGV1, "dimanche", Color.Red)
        End Sub
     
        Private Sub ColorerColonne(DGV As DataGridView, Jour As String, Couleur As Color)
            For C As Integer = 0 To DGV.Columns.Count - 1
                If DGV.Item(C, 0).Value = Jour Then
                    DGV.Columns(C).DefaultCellStyle.BackColor = Couleur
                End If
            Next
        End Sub
    Je te renvoie le projet de test, j'y ai un peu modifié la procédure MesDonneesAjour() en utilisant un DataRow pour ajouter les lignes dans le DataTable. C'est une variante ...

    DGV_DGV_VB_Base2.zip

    ...

  15. #15
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Parfaitement resolu .. maitre
    Merci infiniment pour l'aide
    Tres tres gentil de votre part
    Merci beaucoup pour votre gentillesse
    Cordialement
    MADA

  16. #16
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    Vérifiez quand même un truc: est-ce que le formatage de couleur persiste si par exemple vous triez les colonnes ?
    De mémoire j'utilisais plutôt les événements paint. Dans ces événements on évalue le contenu de la cellule pour déterminer le formatage à appliquer.

  17. #17
    Membre éclairé Avatar de MADA BLACK
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2015
    Messages
    268
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2015
    Messages : 268
    Par défaut
    Citation Envoyé par binarygirl Voir le message
    Vérifiez quand même un truc: est-ce que le formatage de couleur persiste si par exemple vous triez les colonnes ?
    De mémoire j'utilisais plutôt les événements paint. Dans ces événements on évalue le contenu de la cellule pour déterminer le formatage à appliquer.
    Pour apprendre .. comment faire les événements paint svp

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

Discussions similaires

  1. [XL-2010] Ajouter deux colonnes entre elles
    Par Marc31 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/10/2014, 13h51
  2. comment ajouter une colonne entre deux colonne automatiquement
    Par nabilophone11 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/06/2008, 11h42
  3. Ajout de deux colonnes lorsqu'une des deux est à null
    Par KibitO dans le forum Langage SQL
    Réponses: 1
    Dernier message: 12/09/2006, 14h07
  4. [VB.NET] Comment ajouter une colonne à un DataGridView ?
    Par Tarteens dans le forum Windows Forms
    Réponses: 3
    Dernier message: 22/05/2006, 18h32

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