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 :

copier des textbox dans les dernieres lignes vides [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut copier des textbox dans les dernieres lignes vides
    Bonjour le forum,
    serait il possible d avoir de l'aide sur ce problème?

    j'ai un userform (UF_DivisionF) dans lequel je dois remplir des textbox :
    TE_text1 à TE_text3 ca c'est du texte
    et
    Te_surf12 à Te_surf20 ca se sont des valeur décimal (de 0 a 2 chiffres aprés la virgule.)

    Il faudrait que text1 à text3 se positionne sur sheets("faisan")range ( de la dernière ligne vide représenté par la colonne "d") de A à C.
    et que a la suite se positionne les Te_surf12 à Te_surf20 en cellule (L à S)
    J'ai fait ce ceci mais il y a une erreur "d'incompatibilité de type". en Nommant les textbox en finalisant leur nom par le chiffre de la cells était une bonne idée.
    je suppose que ma variable n'est pas bien identifié
    merci pour votre aide
    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
    Private Sub CB_ValiderDivision_Click()
     
     
    Dim a(3)
    With Sheets("faisan")
    For i = 1 To 3
    a(i - 1) = .Cells(65536, 4).End(xlUp).Row + 1
    .Cells(a(i - 1), i) = DivisionF.Controls("Te_surf" & i)
    Next
    End With
     
    Dim B(20)
    With Sheets("faisan")
    For i = 12 To 20
    B(i - 1) = .Cells(65536, 4).End(xlUp).Row + 1
    .Cells(B(i - 1), i) = DivisionF.Controls(CDbl("Te_surf" & i))
    Next
    End With
     
    End Sub

  2. #2
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    essaie ceci?

    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
    Option Explicit
     
    Private Sub CB_ValiderDivision_Click()
    Dim LastLig As Long
    Dim i As Integer
     
    With Sheets("faisan")
        LastLig = .Range("D65536").End(xlUp).Row + 1
     
        For i = 1 To 3
        .Cells(LastLig, i) = UF_DivisionF.Controls("TE_text1" & i)
        Next
     
        For i = 12 To 20
        .Cells(LastLig, i) = CDbl(UF_DivisionF.Controls("Te_surf" & i))
        Next
     
    End With
     
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut
    merci beaucoup. c'etait ca
    je remets le code qui marche bien aprés autres corrections
    encore merci
    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
    Dim a(3)
    With Sheets("Faisan")
    For i = 1 To 3
    a(i - 1) = .Cells(65536, 4).End(xlUp).Row + 1
    .Cells(a(i - 1), i) = DivisionF.Controls("Te_text" & i)
    Next
    End With
     
    Dim c(6)
    With Sheets("Faisan")
    For i = 5 To 6
    c(i - 1) = .Cells(65536, 4).End(xlUp).Row + 1
    .Cells(c(i - 1), i) = CDbl(DivisionF.Controls("Te_surf" & i))
    Next
    End With
     
    Dim B(18)
    With Sheets("Faisan")
    For i = 12 To 18
    B(i - 1) = .Cells(65536, 4).End(xlUp).Row + 1
    .Cells(B(i - 1), i) = CDbl(DivisionF.Controls("Te_surf" & i))
    Next
    End With
     
    End Sub

  4. #4
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Essaie de clarifier ton code, beaucoup de .... (je ne trouve pas le mot)!
    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
    Private Sub CB_ValiderDivision_Click()
    Dim LastLig As Long
    Dim i As Integer
    With Sheets("faisan")
        LastLig = .Range("D65536").End(xlUp).Row + 1
     
        For i = 1 To 3
           .Cells(LastLig, i) = Me.Controls("TE_text" & i)    
        Next
     
        For i = 5 To 6
           If IsNumeric(Me.Controls("Te_surf" & i)) Then .Cells(LastLig, i) = CDbl(Me.Controls("Te_surf" & i))
        Next
     
        For i = 12 To 18
           If IsNumeric(Me.Controls("Te_surf" & i)) Then .Cells(LastLig, i) = CDbl(Me.Controls("Te_surf" & i))
        Next        
    End With
    Unload Me
    End Sub
    Pourquoi les tableaux a(), b() et c()???
    une seul
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Sheets("faisan")
       ...
    End With
    ne suffit pas?

    Pourquoi à chaque fois chercher la dernière case vide de la colonne D alors que cette case est inchangée ici?

    attention aux null ici (ou autre chose non numérique)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CDbl(Me.Controls("Te_surf" & i))
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  5. #5
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Insomnie oblige
    ci-joint autre code compact avec la règle de nomination des TextBox suivante: tbNomDuControlXX
    tb: obligatoire indiquant que c'est un TextBox
    NomDuControl: n'importe quel nom
    XX: N° de la colonne en 2 chiffres
    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
    Private Sub CB_ValiderDivision_Click()
    Dim LastLig As Long
    Dim col As Integer
    Dim Ktrl As Control
     
    '##########################################################
    '# Les captions des TextBox doivent être obligatoirement  #
    '# sous cette forme: tbNomDuControlXX                     #
    '# tb obligatoire                                         #
    '# NomDuControl: n'importe quoi                           #
    '# XX: N° de la colonne où la donnée du textbox sera      #
    '# insérée (en 2chiffres)                                 #
    '# Exemple: tbSurf05                                      #
    '##########################################################
     
    With Sheets("faisan")
        LastLig = .Range("D65536").End(xlUp).Row + 1  'tu es sûr qu'en D la dernière cellule vide?
        For Each Ktrl In Me.Controls
            If Left(Ktrl.Name, 2) = "tb" Then
                col = CInt(Right(Ktrl.Name, 2))
                If IsNumeric(Ktrl) Then
                    .Cells(LastLig, col) = CDbl(Ktrl)
                    .Cells(LastLig, col).NumberFormat = "0.00"
                Else
                    .Cells(LastLig, col) = Ktrl
                End If
            End If
        Next Ktrl
    End With
    Unload Me
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mars 2009
    Messages : 408
    Points : 216
    Points
    216
    Par défaut
    je te remercie pour tout on enseignement je vais essayer d adapter a mon code dés que j'ai bien tout fini et que cela ressemble a ton travaille je te le fait suivre
    merci

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

Discussions similaires

  1. [XL-2003] Formulaire, copier une textbox dans la même ligne que les autres
    Par jbelleng dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/08/2011, 13h25
  2. [XL-2003] la différence entre les lignes des deux feuilles dans la premiere ligne vide d'une des deux
    Par safouunette dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/11/2010, 10h20
  3. total dans la derniere ligne vide Flexgrid
    Par BERRACHED SAID dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/08/2010, 00h41
  4. Réponses: 2
    Dernier message: 04/01/2009, 17h59
  5. Inscription resultat Textbox dans derniere ligne vide
    Par biloute91 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/02/2008, 18h16

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