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

Macros et VBA Excel Discussion :

Boucle sur TxtBox avec deux inconnues


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Par défaut Boucle sur TxtBox avec deux inconnues
    Bonjour,
    J'ai plusieurs TxtBox dans mon UserForm et pour récupérer les valeurs des TxtBox j'ai mis en place une boucle mais qui ne s'exécute pas correctement.

    Voici l'ancien code :

    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 ButtonOk_Click()
     
    Range("I2") = TextBox5
    Range("J2") = TextBox6
    Range("K2") = TextBox7
     
    Range("I3") = TextBox8
    Range("J3") = TextBox9
    Range("K3") = TextBox10
     
    Range("I4") = TextBox11
    Range("J4") = TextBox12
    Range("K4") = TextBox13
     
    End Sub
    Et voici le nouveau code avec la boucle :

    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
     
    Private Sub ButtonOk_Click()
    '
    j = 5
    k = 1
    l = 2
    '
    For i = 2 To 13
    Range("I" & i) = Me.Controls("TextBox" & i)
    Range("J" & i) = Me.Controls("TextBox" & j + k)
    Range("K" & i) = Me.Controls("TextBox" & j + l)
    j = j + 1
    Next i
    '
    Unload Me
    '
    End Sub
    En fait la boucle ne me prend pas en compte les valeurs k et l.

    Merci pour votre aide.

    Loumie.

  2. #2
    Membre émérite
    Homme Profil pro
    Responsable des études(en disponibilité)
    Inscrit en
    Juin 2007
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable des études(en disponibilité)
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 367
    Par défaut Boucle sur TxtBox avec deux inconnues
    Pour commencer,je crois qu'il y a un problème ici

    et qu'il faudrait mettre


  3. #3
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour,
    Je ne vois pas trop pourquoi il y aurait un problème avec Essaie peut-être de déclarer tes variables avant de les utiliser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim i as Integer
    Dim j as Integer
    Dim k as Integer
    Ensuite, pourquoi as-tu besoin de 3 variables étant donné que k et l ne bouge pas et que j bouge avec le même pas que i. Ton code équivaut à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub ButtonOk_Click()
       Dim i As Integer
     
       For i = 2 To 13
          Range("I" & i) = Me.Controls("TextBox" & i)
          Range("J" & i) = Me.Controls("TextBox" & i + 4)
          Range("K" & i) = Me.Controls("TextBox" & i + 5)
       Next i
     
       Unload Me
     
    End Sub

  4. #4
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Par défaut
    Citation Envoyé par riaolle Voir le message
    Ensuite, pourquoi as-tu besoin de 3 variables étant donné que k et l ne bouge pas et que j bouge avec le même pas que i. Ton code équivaut à:
    J'ai fais plusieurs tests avec les variables i et j puis juste une variable i et voyant que le résultat était toujours faux j'ai testé avec plus de variables mais le résultat est le même.


    J'ai repris votre code mais je retombe sur le même résultat.

  5. #5
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Pourrais-tu nous dire plus précisemment "ce qui ne marche pas"? En quoi ça ne marche pas? As-tu une erreur? Si oui, laquelle? Si non, que se passe-t-il lorsque tu lances la procédure? Quels sont les résultats?

  6. #6
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Par défaut
    En fait je voudrais ce résultat quand :
    Textbox5 = 1, Textbox6 = 1, Textbox7 = 1
    Textbox8 = 2, Textbox9 = 2, Textbox10 = 2
    Textbox11 = 3, Textbox12 = 3, Textbox13 = 3
    Textbox14 = 4, Textbox15 = 4, Textbox16 = 4

    Nom : Capture1.PNG
Affichages : 74
Taille : 6,2 Ko

    Mais avec mon code et vos propositions je me retrouve avec ca :

    Nom : Capture.PNG
Affichages : 72
Taille : 7,4 Ko

  7. #7
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 970
    Par défaut
    bonsoir
    J'ai plusieurs TxtBox dans mon UserForm et pour récupérer les valeurs des TxtBox j'ai mis en place une boucle mais qui ne s'exécute pas correctement.
    je crois que c'est l'inverse non ??? car ça je crois que tu vas alimenter votre feuille de calcul et non pas récupérer la valeur d'un textbox ??

  8. #8
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Par défaut
    Citation Envoyé par BENNASR Voir le message
    bonsoir

    je crois que c'est l'inverse non ??? car ça je crois que tu vas alimenter votre feuille de calcul et non pas récupérer la valeur d'un textbox ??
    Oui j'ai inversé j'alimente ma feuille avec les valeurs des txtbox

  9. #9
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Pour ce qui est de ton problème, essaye d'ajouter des parenthèse pour lever l'ambiguïté entre le & et le +.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("J" & i) = Me.Controls("TextBox" & (j + k))
    Range("K" & i) = Me.Controls("TextBox" & (j + l))
    Et prends l'habitude de déclarer tes variables avec leur type.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim i As Long, j As Long
    Dim k As Integer, l As Integer
    Citation Envoyé par Ardiden31 Voir le message
    En fait la boucle ne me prend pas en compte les valeurs k et l.
    Pourquoi utiliser des variables pour k et l alors que leurs valeurs sont constantes (ne changent jamais) ?

    Ton code serait plus simple ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ButtonOk_Click()
       Dim i As Long
     
       For i = 2 To 13
          Range("I" & i) = Me.Controls("TextBox" & i)
          Range("J" & i) = Me.Controls("TextBox" & (i + 4))
          Range("K" & i) = Me.Controls("TextBox" & (i + 5))
       Next i
       Unload Me
    End Sub
    Mais si tu veux faire correspondre ton second code au premier, il y a une erreur dans ta boucle For To.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ButtonOk_Click()
       Dim i As Long
     
       For i = 2 To 4
          Range("I" & i) = Me.Controls("TextBox" & (3 * i - 1))
          Range("J" & i) = Me.Controls("TextBox" & (3 * i))
          Range("K" & i) = Me.Controls("TextBox" & (3 * i + 1))
       Next i
       Unload Me
    End Sub

  10. #10
    Membre éclairé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    241
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2012
    Messages : 241
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub ButtonOk_Click()
       Dim i As Long
     
       For i = 2 To 4
          Range("I" & i) = Me.Controls("TextBox" & (3 * i - 1))
          Range("J" & i) = Me.Controls("TextBox" & (3 * i))
          Range("K" & i) = Me.Controls("TextBox" & (3 * i + 1))
       Next i
       Unload Me
    End Sub
    Je n'avais pas vu la publication de Menhir qui résout mon problème

    Merci à vous tous pour votre aide.

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

Discussions similaires

  1. Réponses: 14
    Dernier message: 03/03/2014, 08h16
  2. [1.x] pb sur formulaire avec deux listes (sfWidgetFormDoctrineChoice)
    Par seveinfo dans le forum Symfony
    Réponses: 0
    Dernier message: 11/09/2011, 11h32
  3. Boucle sur feuille avec exception
    Par liop49 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/03/2009, 11h25
  4. Affichage sur écran avec deux carte ATI
    Par dleclere dans le forum Matériel
    Réponses: 0
    Dernier message: 02/02/2009, 19h11
  5. Déclarer une fonction avec deux inconnues
    Par a.ahmed dans le forum MATLAB
    Réponses: 6
    Dernier message: 27/02/2007, 09h43

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