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 :

Récup multi Textbox [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut Récup multi Textbox
    Bonjour à tous,

    Et un de plus,

    Voici voilà mon souci:
    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
    28
    29
    Private Sub ImgValider_Click()
    Dim j, C
    Dim I As Integer
    Dim x As Integer
    Dim MyControl As Control
     
    'Rangement dans Feuille réunion R1/2/3 en fonction des OptBut
     
        'OptionButton sélection R1/R2/R3
        If OptButR1.Value = True Then
            With Sheets("R1") '.....ici selection feuille "R1"
     
                For Each MyControl In UsfSaisieProno.FrameR.Controls
                If TypeOf MyControl Is MSFORMS.TextBox Then
                'Instruction à faire quand le control est un TextBox
                End If
                Next MyControl
     
            End With
        ElseIf OptButR2.Value = True Then
            With Sheets("R2") '.....ici selection feuille "R2"
     
            End With
        ElseIf OptButR3.Value = True Then
            With Sheets("R3") '.....ici selection feuille "R3"
     
            End With
        End If
     End Sub
    Comme vous pouvez le voir je me suis vite trouvé bloqué.

    Voici mon userform de saisie:

    Nom : prono.jpg
Affichages : 425
Taille : 39,1 Ko

    Sur celui-ci, il y 80 textbox, chaque lignes contient 10 textbox.

    Dans mes feuilles "R1/R2/R3", voici comment elles se présentent:

    Nom : BDD.jpg
Affichages : 589
Taille : 32,7 Ko

    J'aimerai selon l'optbut sélectionné, qu'il consigne dans mes feuilles (colonne de O à X et ligne de 3 à 10) le text contenu dans chaque textbox, à savoir que le userform représente exactement les feuilles "R1/2/3") (ex: textbox1=O3; textbox2=P3.....; textbox11=O4; textbox12=P4...etc..)

    A savoir aussi que ces données sont saisie tous les jours avec une date (via calendrier) (voir image) et qu'il y a à chaque fois 8x10 textbox à saisir, donc sur 8 lignes à chaque fois...

    Merci pour vos lumières

    Seb

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Il faut que tu construises un tableau de données à deux dimensions avec l'ensemble de valeurs de chaque "TextBox".
    Il faut donc nommer les "TextBox" dans un ordre croissant ou avec une certaine logique.

    Ensuite il suffit simplement de coller ton tableau dans la feuille de ton choix et au bon endroit.

    Question : Pourquoi ne pas créer une feuille de saisie des données plutôt que de passer par un "UserForm" avec 80 "TextBox" ?

    Cordialement,
    SmallFlower

  3. #3
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    Tu pourrais peut-être créer les textbox à l'initialisation du userform de manière dynamique, parce que renommer chaque textbox ou autre ça risque d'être très chiant à faire !

    Ou alors en les renommant un peu de ce genre-là : TextBox[X][Y] avec X qui va de 1 à 8 et Y de 0 à 9 comme ça tu peux facilement boucler dedans et reconstruire n'importe quel tableau un peu de ce genre-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each MyControl In UsfSaisieProno.FrameR.Controls
         If TypeOf MyControl Is MSFORMS.TextBox Then
           x = CInt(Mid(MyControl.Name, 8, 1))
           y = CInt(Mid(MyControl.Name, 9, 1))+1
           Range(x,y).Value = MyControl.Text 'ou Range(Tableau).Cells(x,y).value
        End If
    Next MyControl
    Forcément c'est un peu chiant de renommer tes 80 textboxes... Sinon tu pourrais jouer avec leur Tag dès l'initialisation du UserForm en les "scannant" avec par exemple :

    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
    Select Case MyControl.Top 
         Case xxx 
             MyControl.Tag = 1
         Case yyy 
             MyControl.Tag = 2
         Case zzz
             MyControl.Tag = 3
         '... jusqu'à 8
    End Select
     
    Select Case MyControl.Left
        Case aaa
              MyControl.Tag = MyControl.Tag & 0
        Case bbb
              MyControl.Tag = MyControl.Tag & 1
        Case ccc
              MyControl.Tag = MyControl.Tag & 2
        '... jusqu'à 9
    End Select
    Bien sûr, les xxx, aaa et tout sont des valeurs que tu obtiens en regardant ton userform ou même en faisant des intervalles. (<aaa puis <bbb puis <ccc...)

    Quentin

  4. #4
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut re
    Bonsoir à vous deux,

    Merci pour votre intervention

    @SmallFlower
    Tu sais je suis autodidacte donc besoin de support pour travailler, j'apprends tous les jours en VBA, mais je t'accorde que pondre un code sans modèle.....je suis perdu
    Je comprends parfaitement ce que tu as écrit mais de là à le mettre en application est une autre histoire.....!!!

    @Quentin77170:
    Ton code postale fini comme le mien sauf que moi c 76170

    Sinon, pour info, mes textbox sont nommé textbox1 à textbox80
    Forcément c'est un peu chiant de renommer tes 80 textbox... Sinon tu pourrais jouer avec leur Tag dès l'initialisation du UserForm en les "scannant" avec par exemple :
    Désolé mais je ne vois pas le truc
    Bien sûr, les xxx, aaa et tout sont des valeurs que tu obtiens en regardant ton userform ou même en faisant des intervalles. (<aaa puis <bbb puis <ccc...)
    Et encore moins ici

    Ouhh lala, je fais quoi avec tout cela.....

    Seb

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    Héhé

    Sont elles au moins dans le bon ordre ? Après, l'ordre croissant comme ça n'est pas forcément le plus pratique car tu perds la notion de tableau... et encore, t'as 10 colonnes donc c'est déjà ça !

    Quand je parlais des tag, c'est une sorte de zone tampon où tu stockes l'info que tu veux, l'utilisateur ne le verra jamais. C'est pour cela que je pensais que tu pouvais "scanner" ton UserForm et pour chaque TextBox dont la propriété .Top (donc sa coordonnée verticale) vaut 50 (par exemple) ou de 40 à 60 si tu veux avoir un intervalle, alors tu sais qu'elles sont en première ligne, donc dans leur tag tu écris "1" et ensuite tu scannes leur .Left (coordonnée horizontale) et si elles sont au niveau de la 1ère colonne, alors tu complètes le tag avec 0 donc tu retraces la cartographie graphique de tes textbox...
    Comme ça tu obtiens dans le tag de chaque textbox leur position : 23 (2ème ligne, 4ème colonne (car on commence de 0 à 9 comme tu as 10 colonnes))

    Je sais pas si c'est plus clair, lol.

    Mais franchement, moi je pense que tu devrais regarder quelque chose qui ressemble à ma première proposition : renommer les textbox ainsi :

    Ou alors en les renommant un peu de ce genre-là : TextBox[X][Y] avec X qui va de 1 à 8 et Y de 0 à 9 comme ça tu peux facilement boucler dedans et reconstruire n'importe quel tableau un peu de ce genre-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For Each MyControl In UsfSaisieProno.FrameR.Controls
         If TypeOf MyControl Is MSFORMS.TextBox Then
           x = CInt(Mid(MyControl.Name, 8, 1)) 
           y = CInt(Mid(MyControl.Name, 9, 1))+1
           Range(x,y).Value = MyControl.Text 'ou Range(Tableau).Cells(x,y).value
        End If
    Next MyControl
    ça te demande 5 minutes à t'embêter à renommer les textbox mais après tu es tranquille !

  6. #6
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut Re Quentin
    ouuuhhhaa, alors là c le summum

    Euh comment dire!!!!

    C clair

    ça te demande 5 minutes à t'embêter à renommer les textbox mais après tu es tranquille !
    Ok, mais je t'avoues que je suis largué là.....
    La façon de ton code, je ne comprends pas

    Sont elles au moins dans le bon ordre ?
    Oui, dans usf, 1ère ligne = textbox de 1 à 10 etc....

    Seb

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

Discussions similaires

  1. TextBox Multi Lignes
    Par mdordenart dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 21/07/2009, 11h24
  2. Réponses: 5
    Dernier message: 04/03/2009, 20h03
  3. textbox multi colonne
    Par alsimbad dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/08/2008, 06h17
  4. Problème récup infos textbox
    Par Aizen64 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 21/02/2008, 12h39
  5. Multi Styles et Couleurs dans Textbox
    Par Danyel dans le forum VB.NET
    Réponses: 2
    Dernier message: 23/07/2007, 17h20

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