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épétition de transfert de données entre textbox et WS


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 25
    Par défaut Répétition de transfert de données entre textbox et WS
    Bonjour,

    J'ai un tableau sur un userform composé de textbox. Pour mon projet, je dois transférer les données du userform vers un tableau de récap excel... Mais je bloque sur mon code car il y a trop de répétition et je ne sais pas comment enchainer les actions. Voici mon 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
    17
    18
    19
    20
    21
    22
    23
    24
    DerLig = Sheets("Jour P1").Cells(Sheets("Jour P1").Columns(1).Cells.Count, 1).End(xlUp).Row + 1  'Récupère la dernière ligne, +1 pour ligne où écrire
    Sheets("Jour P1").Cells(DerLig, 1) = EnrgJour.TBDatejour
    Sheets("Jour P1").Cells(DerLig, 2) = Format(EnrgJour.TBheurejour1, "hh:mm")
    Sheets("Jour P1").Cells(DerLig, 3) = "Prélèvement 1"
    Sheets("Jour P1").Cells(DerLig, 4) = Format(EnrgJour.TBJour1L1, "0") 'chaque TB correspond à une textbox L1= ligne1
    Sheets("Jour P1").Cells(DerLig, 5) = Format(EnrgJour.TBJour2L1, "0")
    Sheets("Jour P1").Cells(DerLig, 6) = Format(EnrgJour.TBJour3L1, "0")
    Sheets("Jour P1").Cells(DerLig, 7) = Format(EnrgJour.TBJour4L1, "0")
    Sheets("Jour P1").Cells(DerLig, 8) = Format(EnrgJour.TBJour5L1, "0")
    Sheets("Jour P1").Cells(DerLig, 9) = Format(EnrgJour.TBJour6L1, "0")
    Sheets("Jour P1").Cells(DerLig, 10) = Format(EnrgJour.TBJour7L1, "0")
     
    ???????????????????????????????????????????????????????????????????
     
    Sheets("Jour P1").Cells(DerLig, 1) = EnrgJour.TBDatejour
    Sheets("Jour P1").Cells(DerLig, 2) = Format(EnrgJour.TBheurejour2, "hh:mm")
    Sheets("Jour P1").Cells(DerLig, 3) = "Prélèvement 2"
    Sheets("Jour P1").Cells(DerLig, 4) = Format(EnrgJour.TBJour1L2, "0")
    Sheets("Jour P1").Cells(DerLig, 5) = Format(EnrgJour.TBjour2L2, "0")
    Sheets("Jour P1").Cells(DerLig, 6) = Format(EnrgJour.TBJour3L2, "0")
    Sheets("Jour P1").Cells(DerLig, 7) = Format(EnrgJour.TBJour4L2, "0")
    Sheets("Jour P1").Cells(DerLig, 8) = Format(EnrgJour.TBJour5L2, "0")
    Sheets("Jour P1").Cells(DerLig, 9) = Format(EnrgJour.TBJour6L2, "0")
    Sheets("Jour P1").Cells(DerLig, 10) = Format(EnrgJour.TBJour7L2, "0")
    J'ai mis des points d'interrogations la ou il devrait y avoir un truc voulant dire "ensuite" ou "après".... Si c'est possible...
    Ce style de code doit etre répéter pour chaque ligne de mon tableau de départ. Chaque ligne correspond à un "prélèvement" qui doit etre mentionner dans le tableau de récap...
    C'est pas facile quand on est nul...
    Merci à vous pour votre aide.

  2. #2
    Membre chevronné Avatar de drakkar_agfa
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    618
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 618
    Par défaut
    Bonjour,

    Je n'ai pas beaucoup de temps ni d'expérience avec les objets dans un USD mais d'après mois, il serait possible d'utiliser un For Each pour parcourir les objets de l'USF.
    J'ai trouvé un bout de code que j'avais déja utilisé pour compter le nombre d'objet de type Checkbox dans mon USF et ensuite je parcours tous les Checkbox :
    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
        Dim C As Control, nb As Byte, x As Byte, Var As String
        Dim nbChecked As Byte, sTemps As String
        nb = 0
        nbChecked = 0
     
        'comptage des Checkbox insérés sur le UserForm
        For Each C In usfMonUSF.Controls
            If TypeOf C Is MSForms.CheckBox Then nb = nb + 1
        Next C
     
        'bouclage sur les CheckBox
        For x = 1 To nb
            If usfMonUSF.Controls("CheckBox" & x) = True Then
                nbChecked = nbChecked + 1
            End If
        Next x
    En général, pour tu peux boucler n'importe quel objet d'un USF par son nom avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    usfMonUSF.Controls("LeNom" & x)
    'où x correspond à un chiffre
    Pour ton cas, tu pourras adapter avec les textbox et au lieu de compter tu pourrais créer une function qui transfert les données de tes txtbox à la feuille.

    Regarde ça et si tu as des questions pour le code ou l'algo n'hésite pas!
    Bonne chance!

  3. #3
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 25
    Par défaut
    Bon j'essaye, j'essaye.. Mais sans résultat! Il doit y avoir 40 erreurs de syntaxe:
    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
    Private Sub Validenrgjour_Click()
     
    Dim DerLig As Long
    Dim TBjour As Integer
     
    Heure = Left(TBheurejour1, 11)
    ligneUF = Right(TBjour & "" & L & "", 1)
     
    If Not IsDate(Heure) Then
        MsgBox "Erreur de format dans l'heure saisie, merci d'adapter"
        Exit Sub
    End If
    DerLig = Sheets("Jour P1").Cells(Sheets("Jour P1").Columns(1).Cells.Count, 1).End(xlUp).Row + 1  'Récupère la dernière ligne, +1 pour ligne où écrire
     
    For Each ligneUF In EnrgJour
    Sheets("Jour P1").Cells(DerLig, 1) = EnrgJour.TBDatejour
    Sheets("Jour P1").Cells(DerLig, 2) = Format(Heure, "hh:mm")
    Sheets("Jour P1").Cells(DerLig, 4) = Format(ligneUF, "0")
    Next ligneUF
     
     
    End Sub
    Au moins dans le principe, c'est cela que je voudrais faire.
    Pourriez vous me guider?

Discussions similaires

  1. [VBA-A] transfert de données entre formulaire
    Par snaxisnake dans le forum VBA Access
    Réponses: 10
    Dernier message: 20/04/2006, 16h48
  2. transfert de données entre deux tables
    Par student007 dans le forum Access
    Réponses: 4
    Dernier message: 23/12/2005, 13h04
  3. [Workgroup] Transfert de données entre 2 pc
    Par portu dans le forum Sécurité
    Réponses: 9
    Dernier message: 20/12/2005, 10h24
  4. Réponses: 5
    Dernier message: 30/11/2005, 16h41
  5. [Designer] Problème de transfert de données entre modul
    Par BILLYPATOU dans le forum Designer
    Réponses: 11
    Dernier message: 09/03/2004, 18h15

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