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 :

Enregistrer les données des textbox dans une feuille excel [XL-2003]


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
    Février 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Par défaut Enregistrer les données des textbox dans une feuille excel
    Coucou tout le monde,

    J'ai besoin d'aide. J'ai deux UserForm. Le premier possède une listView qui contient des données et le deuxième contient le détail de chaque donnée de la première ListView du premier UserForm. Donc en cliquant sur une donnée de la listView, on a accès au UserForm2. Ce dernier possède des textBox et un commandBouton_enregistrer. Donc pour une donnée sélectionner dans ma listView, j'ai 16 données au niveau de mon UserForm2.
    Donc quand l'utlisateur clic sur Enregistrer, il enregistre les 16données dans une feuille excel comme le montre le code suivant
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Private Sub Enregistrer()
    Dim i%
     
    NF$ = "Rex_Sauvegarde"
    Exit Sub
    'Efface les Données précédentes
    i% = Sheets(NF$).Range("D65536").End(xlUp).Row
    Sheets(NF$).Range("D2:D" & CStr(i%)).Clear
     
    'Copie les données
    Sheets(NF$).Range("D2").Value = TextBox1B
    Sheets(NF$).Range("D3").Value = TextBox2B
    Sheets(NF$).Range("D4").Value = TextBox3B
    Sheets(NF$).Range("D5").Value = TextBox4B
    Sheets(NF$).Range("D6").Value = TextBox5B
    'Sheets(NF$).Range("D7").Value = TextBox6B car TextBox6B n'existe pas
    Sheets(NF$).Range("D8").Value = TextBox7B
    Sheets(NF$).Range("D9").Value = TextBox8B
    Sheets(NF$).Range("D10").Value = TextBox9B
    Sheets(NF$).Range("D11").Value = TextBox10B
    Sheets(NF$).Range("D12").Value = TextBox11B
    Sheets(NF$).Range("D13").Value = TextBox12B
    Sheets(NF$).Range("D14").Value = TextBox13B
    Sheets(NF$).Range("D15").Value = TextBox14B
    Sheets(NF$).Range("D16").Value = TextBox15B
    Sheets(NF$).Range("D17").Value = TextBox16B
     
    'Copie les actions
    i% = Sheets(NF$).Range("D65536").End(xlUp).Row
    Sheets(NF$).Range("J2:N" & CStr(i%)).Clear
     
    i% = ListBox2.ListCount
    If i% > 0 Then
    Sheets(NF$).Range("K2:K" & CStr(i% + 1)) = ListBox2.List
    Sheets(NF$).Range("L2:L" & CStr(i% + 1)) = ListBox3.List
    Sheets(NF$).Range("M2:M" & CStr(i% + 1)) = ListBox4.List
    Sheets(NF$).Range("N2:N" & CStr(i% + 1)) = ListBox5.List
    End If
     
    If OptionButton1.Value = True Then Sheets(NF$).Range("H2").Value = "1"
    If OptionButton2.Value = True Then Sheets(NF$).Range("H2").Value = "2"
    If OptionButton3.Value = True Then Sheets(NF$).Range("H2").Value = "3"
     
    End Sub
    Cependant, je voudrais enregistrer chaque donnée sélectionné dans la listView c'est à dire que pour chaque donnée de la listView, je voudrais enregistrer les 16 données les unes à la suite des autres. Donc lors du premier enregistrement, j'aurai 16 données; lors du 2ème, 32 données et ainsi de suite.
    Comment pourrais je incrémenter sur les cellules pour pouvoir enregistrer les données les unes à la suite des autres?

    Help me, please

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonsoir,
    je me suis permis de simplifier le code. Si j'ai bien compris, les données seront enregistrées à la suite des anciennes
    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
    Private Sub Enregistrer()
    Dim LastLig As Long
    Dim i As Byte, j As Byte
     
    With Sheets("Rex_Sauvegarde")
        LastLig = .Cells(.Rows.Count, 4).End(xlUp).Row + 1
        For i = LastLig To LastLig + 15
            If i Mod 7 <> 0 Then .Range("D" & i).Value = Me.Controls("TextBox" & i - LastLig + 1 & "B")
        Next i
     
        i = ListBox2.ListCount
        If i > 0 Then
            For j = 2 To 5
                .Range(.Cells(LastLig, 9 + j), .Cells(LastLig + i, 9 + j)) = Me.Controls("ListBox" & j).List
            Next j
        End If
     
        For j = 3 To 1 Step -1
            If Me.Controls("OptionButton" & j).Value = True Then
                .Range("H" & LastLig).Value = j
                Exit For
            End If
        Next j
    End With
    End Sub

  3. #3
    Membre averti
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Par défaut
    Re,

    Tout d'abord, Bonne annéee!!
    Je ne comprends pas cette partie de ton code. Peux tu stp me l'expliquer si ce n'est pas trop demander?!
    Merciii!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For j = 3 To 1 Step -1
        If Me.Controls("OptionButton" & j).Value = True Then
            .Range("H" & LastLig).Value = j
             Exit For
        End If
    Next j
    De plus, j'ai une erreur qui se lance lors du débogage sur code:
    "Le focus ne peut être déplacé sur le contrôle car celui-ci est invible; non activé ou d'un type n'acceptant oas le focus"

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour,
    c'était une première approximation par rapport aux données fournies dans ton post
    que fait cette partie de ton code?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If OptionButton1.Value = True Then Sheets(NF$).Range("H2").Value = "1"
    If OptionButton2.Value = True Then Sheets(NF$).Range("H2").Value = "2"
    If OptionButton3.Value = True Then Sheets(NF$).Range("H2").Value = "3"
    en Hx (x dernière ligne non? ou toujours la H2?) tu auras 3 si optionbutton3 est coché...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        For j = 3 To 1 Step -1
            If Me.Controls("OptionButton" & j).Value = True Then
                .Range("H" & LastLig).Value = j
                Exit For
            End If
        Next j
    permet de parcourir tes optionbutton du 3 vers le 1 et écris le nombre correspondant dans Hx et sort de la boucle sur j

    L'erreur est explicite, essaie de voir l'état de tes controles.

    ps: ma proposition n'a pas été testée

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 37
    Par défaut
    Re mercatog,

    ben oki je comprends mieux parcontre à quoi correspong LastLig? Si je comprends bien à la dernier ligne non vide?!!

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    LastLig correspond à la cellule en dessous de la dernière cellule remplie de la colonne D

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/03/2014, 13h39
  2. [AC-2007] enregistrer les données sur état dans une table
    Par ouahab dans le forum Access
    Réponses: 1
    Dernier message: 14/05/2012, 15h12
  3. [VBA-E] Problème pour insérer des lignes dans une feuille Excel
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 14h13
  4. Réponses: 9
    Dernier message: 19/02/2007, 20h33
  5. Problème de lecture des cellules dans une feuille Excel
    Par wangjun dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/10/2006, 09h35

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