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 :

Faire une boucle pour chaque textbox remplies


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 249
    Points : 145
    Points
    145
    Par défaut Faire une boucle pour chaque textbox remplies
    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
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Dim XlApp As Object = Nothing, Workbook As Object = Nothing, ActiveSheet As Object = Nothing
            XlApp = GetObject("Excel.Application")
            'XlApp.visible = True'
            Workbook = XlApp.Workbooks.Open(System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\Dossier final - Copie.exe")
            ActiveSheet = Workbook.ActiveSheet
            ActiveSheet.Cells(4, 2).Value = TextBox1.Text
            ActiveSheet.Cells(5, 2).Value = TextBox2.Text
            ActiveSheet.Cells(6, 2).Value = TextBox3.Text
            ActiveSheet.Cells(7, 2).Value = TextBox4.Text
            ActiveSheet.Cells(8, 2).Value = TextBox5.Text()
            ActiveSheet.Cells(9, 2).Value = TextBox6.Text
            ActiveSheet.Cells(10, 2).Value = TextBox7.Text()
            ActiveSheet.Cells(11, 2).Value = TextBox8.Text
            ActiveSheet.Cells(12, 2).Value = TextBox9.Text
    j'ai ce code fois 350 (donc cela prend énormément de temps à l'application pour traiter toutes les informations

    je cherche à faire un truc dans ce style mais je ne sais pas comment exactement*

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       For i = 1 To textbox.Count
                      ActiveSheet.Cells(4, 2& i.ToString).Value  = Value(i - 1)
            Next

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 184
    Points
    17 184
    Par défaut
    Salut

    Je ne suis pas programmeur VB.net, mais il me semble que la réponse est contenu dans ta discussion ICI
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       For i = 1 To textbox.Count
          ActiveSheet.Cells(4, 2& i.ToString).Value  = Me.Controls("Textbox" & i.ToString).Text
       Next
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 249
    Points : 145
    Points
    145
    Par défaut
    Non cela ne fonctionne toujours pas voici le message d'erreur

    Nom : Cure.PNG
Affichages : 447
Taille : 26,7 Ko

  4. #4
    Membre émérite 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
    Points : 2 865
    Points
    2 865
    Par défaut
    Bonjour,

    Peut-être que le code suivant te conviendra mieux ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            For Each TB As TextBox In Me.Controls.OfType(Of TextBox)()
                Dim NumeroTextBox As Integer = CType(TB.Name.Substring(7), Integer)
                ActiveSheet.Cells(NumeroTextBox + 3, 2).Value = TB.Text
            Next
    En relisant ta question initiale, je me rends compte qu'un teste est peut-être nécessaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            For Each TB As TextBox In Me.Controls.OfType(Of TextBox)()
    If TB.Text <> String.Empty Then
                Dim NumeroTextBox As Integer = CType(TB.Name.Substring(7), Integer)
                ActiveSheet.Cells(NumeroTextBox + 3, 2).Value = TB.Text
    End If
            Next
    Attention, il est supposer ici que tous les TextBox de ton Form sont concernés et qu'il sont bien numérotés de 1 à ...


  5. #5
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Points : 372
    Points
    372
    Par défaut
    Bonsoir

    Citation Envoyé par sorbetframboise Voir le message
    [CODE]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       For i = 1 To textbox.Count
                      ActiveSheet.Cells(4, 2& i.ToString).Value  = Value(i - 1)
            Next
    Ici tu mélanges des integer avec des strings donc donc tu concatènes 2 et i sur les colonnes pour former des strings contenant "21", "22", etc.. hors si tu utilises des strings pour les colonnes, excel attend A, B, C D pour les colonnes, c'est ce qui provoque l'erreur.
    Si tu veux concaténer, ce qui fonctionnera c'est "int(2& i.ToString)" mais cela devient une usine à gaz et c'est inutile. Ce qu'il faut, c'est utiliser ta variable i correctement en utilisant des integer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To textbox.Count
                activesheet.Cells(4, 20 +i).value = Value(i - 1) 'ou Me.Controls("TextBox" & i.ToString).Text 
            Next

    Si ta textbox est vide, il copiera dans la case excel "rien", tu auras donc une case vide. Et comme l'a dit Phil Rob, il faut que tes textbox soit correctement numérotées...

    PS : soit dit en passant " ActiveSheet.Cells(4, "A").Value = "quelques choses" fonctionne, tu peux donc utiliser des integer et des string mais il faut utiliser les lettres de l'alphabet pour les colonnes, ce qui n'est pas très pratique.

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 249
    Points : 145
    Points
    145
    Par défaut
    Phil rob c'est parfait merci pour ta réponse

    Elthorn avec ta solution il y a le même problème que j'avais a l'initial c'est a dire le count ne fonctionne pas avec les textbox merci quand même de ta participation et de m'avoir éclairé sur la différence entre les string et les int

  7. #7
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Points : 372
    Points
    372
    Par défaut
    Bonjour,

    Essaie comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    
    For i = 1 To Me.Controls.OfType(Of System.Windows.Forms.TextBox).Count
                'action à faire
     Next
    mais il faut que toutes tes textbox soient bien numérotées ou alors il faut enlever à ton count le nombre de textbox non concernées.

    Attention à bien mettre "System.Windows.Forms.TextBox" pour préciser que ce sont des textbox windows form et non des textbox excel. (comme on a "Imports Microsoft.Office.Interop.Excel" (en tout cas moi je l'ai ), par defaut il va chercher des textbox excel, ne me demander pas pourquoi, je l'ignore , mais je suis preneur de toute explication).

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

Discussions similaires

  1. Faire une boucle pour sommer des textbox
    Par crocket51 dans le forum VB.NET
    Réponses: 6
    Dernier message: 25/02/2013, 23h41
  2. [PHP 5.0] Faire une boucle pour des noms de variable
    Par lonyc dans le forum Langage
    Réponses: 2
    Dernier message: 09/12/2009, 17h19
  3. Faire une boucle pour facilité le calcul
    Par r_dani dans le forum Macro
    Réponses: 2
    Dernier message: 25/03/2009, 12h52
  4. Faire une Boucle pour lire dans Settings.settinge
    Par totoen dans le forum Windows Forms
    Réponses: 0
    Dernier message: 27/10/2008, 10h44
  5. Faire une boucle pour l'alphabet
    Par El-Diablo- dans le forum Langage
    Réponses: 2
    Dernier message: 08/04/2008, 23h11

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