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 :

Modification de valeurs des cellules d'un DataGridView sur certaines colonnes


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Par défaut Modification de valeurs des cellules d'un DataGridView sur certaines colonnes
    Bonjour à tous,

    J'aimerai un peu d'aide concernant un point pour lequel je n'arrive pas à trouver de solution.

    J'ai un DataGridView avec mes lignes et mes colonnes peuplées. Je dois ensuite modifier les valeurs de certaines colonnes (toutes les lignes/cellules) pour leur retirer les '0' présents avant les chaînes de caractères.

    Cependant je ne parviens pas à trouver comment faire. Pour être plus précis, sur 24 colonnes (base 0), je dois modifier toutes les cellules des colonnes 7, 13, 20, 21 et 22. J'ai trouvé comment faire pour modifier ces valeurs en retirant les '0' inutiles. Mais je ne parvient pas à le faire sur les colonnes adéquates.

    Tout ce que j'ai trouvé pour le moment c'est de passer sur chaque cellule de chaque ligne et modifier les cellules, mais ce serait sans compter que sur le fait que pour certaines colonnes, les '0' au début doivent rester.


    Si quelqu'un à une idée, je suis preneur !

    S'il y a besoin de plus d'infos, n'hésitez pas à me demander.

    Merci d'avance.

    Cordialement-

  2. #2
    Membre éclairé Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Par défaut
    Bon, j'ai avancé avec ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim nbLignes As Integer = data_maj.RowCount - 1
            Dim i As Integer
            Dim cellValue As String
            Dim newValue As String
     
    For i = 0 To nbLignes
     
            cellValue = data_maj.Item(6, i).Value
            newValue = cellValue.TrimStart("0"c)
            data_maj.Rows(i).Cells(6).Value = newValue
     
    Next
    Qui me permet d'effectuer les modification sur toutes les cellules de la colonne 6.

    Cela semble correspondre à mes besoins. Cependant, le code me retourne l'erreur suivante à la ligne : "newValue = cellValue.TrimStart("0"c)"

    Nom : erreur_vb.png
Affichages : 889
Taille : 13,3 Ko

    et bizarrement, pour tester un truc bête, j'avais ajouté le code : "msgbox(cellValue)"
    après la ligne : "cellValue = data_maj.Item(6, i).Value" … et là je ne sais pas pourquoi mais, la msgbox m'affiche bien la valeur de la cellule en cours, et en cliquant sur le bouton "OK" de cette dernière, la modification se fait bien dans le DataGridView et sans erreur. J'ai spammé la touche Entrée pendant un moment et tout se déroulait bien. Une fois la ligne de code de la msgbox retirée, l'erreur réapparaît.

    Je n'y comprends rien là …


    Un peu d'aide svp !?

  3. #3
    Membre éclairé Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Par défaut
    En fait, peu importe où je place une msgbox dans ce bout de code, le résultat dedans est toujours bon, que ce soit cellValue ou newValue, et le datagridview se modifie comme prévu.

    Mais dès que je la supprime j'ai cette erreur qui revient toujours.

    Là franchement, c'est mystère et boule de gomme ….

  4. #4
    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,

    .TrimStart("0") convient aussi au lieu de .TrimStart("0"c), VB fait le reste ...

    Que se passe-t-il si tu remplaces ton code par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    '...
    For i = 0 To nbLignes
            data_maj.Rows(i).Cells(6).Value = data_maj.Rows(i).Cells(6).Value.TrimStart("0")
    Next
    Attention, il faut absolument que le(s) zéro(s) commence(nt) la chaîne, il ne faut notamment pas que subsiste un espace de signe positif au début ...

    Attention encore, il ne faudrait pas que le DataGridView soit lié à une DB par sa propriété DataSource, par exemple ...

    J'espère que ceci te donnera une idée

  5. #5
    Membre éclairé Avatar de Shennong
    Homme Profil pro
    Technicien Informatique/Hotliner
    Inscrit en
    Février 2012
    Messages
    186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Technicien Informatique/Hotliner
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 186
    Par défaut
    Salut Phil Rob !

    Merci pour toutes ces infos. J'ai finalement compris le pourquoi du comment. En défilant jusqu'en bas de mon DGV (3003 lignes), je me suis aperçu qu'il me mettait toujours une ligne vide après les données.
    Et donc l'erreur venait de là. En effet en modifiant le count - 1 et en le passant à count - 10 par exemple, mon code fonctionne parfaitement bien.

    Désormais il me faut trouver comment supprimer une ou (éventuellement) plusieurs lignes vides en fin de DGV


    Sais-tu comment il faut s'y prendre ? j'ai tenté un truc du genre :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    For r As Integer = data_maj.Rows.Count - 1 To 0 Step -1
     
                For Each cell As DataGridViewCell In data_maj.Rows(r).Cells
     
                    If IsNothing(cell.Value) Then
     
                        data_maj.Rows.RemoveAt(r)
     
                    End If
     
                Next
     
    Next

    Mais j'ai une erreur à l'exécution du script : "System.InvalidOperationException : 'Impossible de supprimer la nouvelle ligne non validée'"


    Merci encore.

    Cordialement-

  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
    Avec le code que tu présentes cette fois, tu tentes de supprimer les lignes du DataGridView dans le cas où une des cellules de la ligne est "vide" ...
    Si ton objectif est d'ôter les zéros non significatifs de certaines cellules, il te suffit de reprendre ton code .TrimStart dans un bloc Try - Catch de sorte à passer sans encombre les cellules vides. il n'y a rien à placer du coté Catch, simplement la boucle te conduira à la cellule suivante ...

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

Discussions similaires

  1. extraction des valeurs des cellules d'un datagridview
    Par melancolie dans le forum ASP.NET
    Réponses: 1
    Dernier message: 28/03/2011, 19h05
  2. Réponses: 2
    Dernier message: 10/02/2009, 16h03
  3. valeurs des cellules séléctionnées dans un grid
    Par tasnim86 dans le forum wxPython
    Réponses: 4
    Dernier message: 14/03/2008, 10h59
  4. Feuille de données et valeur des cellules
    Par x0249 dans le forum IHM
    Réponses: 1
    Dernier message: 17/05/2007, 10h58
  5. Lire un fichier Excel pour modifier les valeurs des cellules
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/10/2006, 15h13

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