Copier l'ensemble des données d'un userform dans colonne

mikam1660 Messages postés 4 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 29 juin 2010 - 28 juin 2010 à 10:16
mikam1660 Messages postés 4 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 29 juin 2010 - 29 juin 2010 à 19:59
Bonjour à tous,

Je cale sur un problème en vba (mon niveau étant très faible vous vous en doutez lol).

En fait j'ai crée un userform dans lequel j'ai disposé une quinzaine de textboxs et je voudrais, lorsque je clique sur le bouton valider, que l'ensemble des données contenues des données se copie dans une colonne (l'ordre ne m'inporte peu).

J'avais fait un truc du style ci-dessous, mais je n'arrive pas à trouver la commande qui permet de copier l'ensemble des données :

If Me.nchambre.value = "402" Then
' Mise en place des valeurs saisies
Sheets("donnees").Range("r100").End(xlUp).Offset(1 , 0).value = Me.Controls en fait c'est ici que je souhaiterais pouvoir indiqué que je veux copier toutes les données
Unload Me
Exit Sub
End If

Quelqu'un aurait-il une petite idée sur comment je pourrais faire ceci ?

Merci d'avance à tous.

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 juin 2010 à 11:08
Salut
Non, tu ne pourras copier toutes tes TextBox en une seule fois, il te faut faire une écriture par TextBox, l'une après l'autre :
    Dim monRange As Range
    Dim monObjet As Control
    Dim r As Long
    Set monRange = Sheets("donnees").Range("r100").End(xlUp).Offset(1 , 0)
    r = 0
    For Each monObjet In Me.Controls
        If TypeOf monObjet Is TextBox Then
            monRange.Offset(r, 0).Value = monObjet.Text
            r = r + 1
        End If
    Next

Seul problème : Le TypeOf ne veut pas marcher chez moi, et je ne comprends pas pourquoi, alors que je l'utilise couramment.

Plan B :
        If LCase(monObjet.Name) Like "textbox*" Then
            monRange.Offset(r, 0).Value = monObjet.Text
            r = r + 1
        End If
mais je n'aime pas trop me baser sur les noms des objets ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
28 juin 2010 à 12:32
Bonjour,

Peut-être parce que TypeOf n'existe pas sous VBA... mais TypeName...

Remplacer:
If TypeOf monObjet Is TextBox Then


Par :
If TypeName(monObjet) = "TextBox" Then


Amicalement,
Us.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 juin 2010 à 12:34
Merci us_30
Bizarre qu'il ne gueule pas avec TypeOf ...
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
28 juin 2010 à 12:44
Oui et Non... Plutôt un oubli de microsoft pour bloquer IDE de VBA. En effet, ils n'ont fait que reprendre l'IDE de VB6, et en ont oubliés quelqu'uns au passage... Par exemple, tu peux voir aussi que LINE est reconnue avec sa syntaxe de VB6. C'est à dire, si tu tapes : Line (5,6). L'ide demande de compléter avec "-"... etc, mais il est tout à fait impossible de faire une ligne... Cet exemple, mais peut-être pas le meilleur, car l'instruction "Line" existe mais sous une autre forme, avec les objets graphiques... mais bon, cela montre bien quelques oublis dans l'adaptation.

Amicalement,
Us.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
28 juin 2010 à 12:47
et pourquoi Changer "TypeOf" en "Typename"... Ouais, ben, je t'en pose des questions !?

Amicalement,
Us.
0
mikam1660 Messages postés 4 Date d'inscription jeudi 26 février 2009 Statut Membre Dernière intervention 29 juin 2010
29 juin 2010 à 19:59
Merci à tous de votre aide !!

J'ai pu m'en sortir sans problème grâce à vous

@+ et merci encore
0
Rejoignez-nous