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 :

Optimisation d'une boucle for each


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 112
    Par défaut Optimisation d'une boucle for each
    Bonjour !

    J'ai 5 textbox pour lesquelles j'affiche le total de chacune de mes colnnes de mon datagridview.
    J'aimerais savoir s'il est possible d'optimisser cette boucle for each. Au lieu de l'écrire 5 fois , j'aimerais l'écrire une fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
                    For Each r As DataRow In ds.Tables("TOTO").Rows
    
                        Dim i As Integer = 0
                        Dim total As Single = 0
    
                        For i = 0 To dgWhse.RowCount - 1
                            total = total + dgWhse.Item(1, i).Value        
                     Next
                        textbox.Text = total.ToString
    
                    Next

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Bonsoir,

    Je ne comprend pas l'utilité de boucler sur ta table toto si vous n'utilisez pas la row dans le code (ligne n°1) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For Each r As DataRow In ds.Tables("TOTO").Rows
     
            Dim i As Integer = 0
            Dim total As Single = 0
     
            For i = 0 To dgWhse.RowCount - 1
                    total = total + dgWhse.Item(1, i).Value       
            Next
            textbox.Text = total.ToString
     
    Next
    Sinon pour la deuxième boucle il vous suffit de faire un tableau d'integer pour recevoir le résultat de chacune des colonnes, de faire une seconde boucle énumerant les colonnes et de placer le résultat de la colonne x dans l'index x du tableau de résultat.

  3. #3
    Membre confirmé Avatar de roshy
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 107
    Par défaut
    Vite comme ça, je te dirais de mettre ta boucle dans un sub qui prendrait le nom de ta colonne en paramètre.

    Quelque chose 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
     
    Private Sub FillColumn (ByVal strColName as String)
       For Each r As DataRow In ds.Tables(strColName).Rows
     
            Dim i As Integer = 0
            Dim total As Single = 0
     
            For i = 0 To dgWhse.RowCount - 1
                    total = total + dgWhse.Item(1, i).Value       
            Next
            textbox.Text = total.ToString
     
       Next
    End Sub

  4. #4
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Par défaut
    Citation Envoyé par roshy Voir le message
    Vite comme ça, je te dirais de mettre ta boucle dans un sub qui prendrait le nom de ta colonne en paramètre.

    Quelque chose 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
     
    Private Sub FillColumn (ByVal strColName as String)
       For Each r As DataRow In ds.Tables(strColName).Rows
     
            Dim i As Integer = 0
            Dim total As Single = 0
     
            For i = 0 To dgWhse.RowCount - 1
                    total = total + dgWhse.Item(1, i).Value       
            Next
            textbox.Text = total.ToString
     
       Next
    End Sub
    Oupppssss, spécifier le nom des colonnes la ou sa doit être une table ce n'est pas vraiment une bonne idée... (ds.Tables(strColName))
    De plus, en supposant que le code précédent le textBox fonctionne, de cette manière on ne sait pas changer le textBox et le résultat sera écrasé à chaque passage

    Faite attention en postant des codes que ça aie un minimum de sens aussi non ca peut dérouter le demandeur.

    Code transformé pour correspondre à votre pensée :
    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
     
     
    ' ... Dans l'appel du sub main
           TextBoxResultat1.Text = SumColumn(1) 
           TextBoxResultat2.Text = SumColumn(2)
           TextBoxResultat3.Text = SumColumn(3)
           TextBoxResultat4.Text = SumColumn(4)
           TextBoxResultat5.Text = SumColumn(5)
    End Sub
     
    Private function SumColumn (ByVal ColonneIndex as integer) as Single 
     
     
            Dim i As Integer = 0
            Dim total As Single = 0
     
            For i = 0 To dgWhse.RowCount - 1
                    total = total + dgWhse.Item(ColonneIndex , i).Value       
            Next
            return total
     
     
    End Function

Discussions similaires

  1. Optimiser une boucle For Each
    Par zaghi dans le forum VB.NET
    Réponses: 14
    Dernier message: 21/06/2012, 11h19
  2. Optimisation d'une boucle for
    Par Vorlane dans le forum MATLAB
    Réponses: 0
    Dernier message: 07/07/2009, 11h36
  3. test avant d'entrer dans une boucle For each cell in selection
    Par totoro02 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 13/01/2009, 09h27
  4. comment effacer un element dans un collection dans une boucle for each
    Par medkarim dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 17/10/2008, 12h48
  5. [VBA-E]PB sur une boucle for each next
    Par rond24 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/07/2006, 15h47

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