Userformn vba et excel

Fermé
geronimo - 25 juil. 2008 à 13:49
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 26 juil. 2008 à 11:17
Bonjour,

Voilà alors, j'ai un dossier excel sur lequel se trouve des boutons qui appellent des userforms.

Ce que je veux c'est pouvoir écrire les informations qui sont transmissent dans l'userform et de les écrire sur un autre fichier Excel.

Voilà mon code, ça ne marche pas !


[quote]
Private Sub CommandButton1_Click()
creation_personnel
End Sub

Private Sub commandbutton2_Click()
Unload Me
End Sub

Sub creation_formateur()
Dim a As Range
Set a = Workbooks("bd_personnel.xls").Worksheets("liste").Range("a2")

While a <> ""
Set a = a.Offset(1, 0)
Wend

a = TextBox1
a.Offset(0, 1) = TextBox2
a.Offset(0, 2) = TextBox3
a.Offset(0, 4) = TextBox4
a.Offset(0, 5) = textbox6

If CheckBox1 = True Then
a.Offset(0, 3) = "Français"
End If

If OptionButton1 = True Then
a.Offset(0, 6) = "Ecole"
If OptionButton2 = True Then
a.Offset(0, 6) = "Travail"
Else
a.Offset(0, 6) = "AUTRE"
End If
End If


If OptionButton4 = True Then
a.Offset(0, 7) = "5-2"
If OptionButton5 = True Then
a.Offset(0, 7) = "5-3"
If OptionButton6 = True Then
a.Offset(0, 7) = " 4-3"
Else
a.Offset(0, 7) = "Adm"
End If
End If
End If


End Sub
/quote

Merci de votre aide
A voir également:

9 réponses

michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
25 juil. 2008 à 16:01
UP,UP,UP. Ben voyons!

Ca marche ou ca marche pas?
SI tu es pressé, répond d'abord aux questions qui te sont posées

L'esclave de service,
Michel
1
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
26 juil. 2008 à 08:47
+1
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
25 juil. 2008 à 14:05
Bonjour,
Essaye d'abord de séparer la ligne
    Set a = Workbooks("bd_personnel.xls").Worksheets("lis­te").Range("a2") 

par
    Workbooks("bd_personnel.xls").Activate
    Set a = Sheets("lis­te").Range("a2") 

Mais possible que tu doive encore séparer Sheets et range.
Et tu dit pas sur quel ligne ca bug.
A+
0
michel_m Messages postés 16602 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 313
25 juil. 2008 à 14:05
Bonjour,

1/Dis nous où ça plante et quel est le message (ne serait ce pas à a=textbox1?)

2/ sub creation_formateur est elle dans un module ou sur la feuille code de l'usf ?

Michel
0
hum ca marche en fait mais le programme est très long...

faut que je me débrouille pour fair en sorte que ça aille plus vite.

Juste pour le principe, comment feraiez vous pour à partir d'un userform, copier des informations dans un autre classeur ?

ce que j'ai fais marche mais ça fait un peu bricolage je trouve et si vous avez une meilleure idée je suis preneur.

Merci en tout cas.
0

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

Posez votre question
up
0
J'ai deja repondu a ta première question oui ca marche pour l'autre sub creation_formateur dans la feuille code de usf
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
26 juil. 2008 à 09:55
M'étonnerait qu'elle fonctionne, avec tes imbrigations de If / End If ??
teste ca..
Sub creation_formateur()
Dim Lig As Integer
    Workbooks("bd_personnel.xls").Activate
    Worksheets("lis­te").Select
    Lig = Range("A65536").End(xlUp).Row + 1

    Cells(Lig, 1) = TextBox1.Value
    Cells(Lig, 2) = TextBox2.Value
    Cells(Lig, 3) = TextBox3.Value
    Cells(Lig, 5) = TextBox4.Value
    Cells(Lig, 6) = textbox6.Value

    If CheckBox1 Then
        Cells(Lig, 4) = "Français"
    End If

    If OptionButton1 = True Then
        Cells(Lig, 7) = "Ecole"
    ElseIf OptionButton2 = True Then
        Cells(Lig, 7) = "Travail"
    Else
        Cells(Lig, 7) = "AUTRE"
    End If

    If OptionButton4 = True Then
        Cells(Lig, 8) = "5-2"
    ElseIf OptionButton5 = True Then
        Cells(Lig, 8) = "5-3"
    ElseIf OptionButton6 = True Then
        Cells(Lig, 8) = " 4-3"
    Else
        Cells(Lig, 8) = "Adm"
    End If
End Sub

Pas tester, j'ai pas tes classeurs
et ca dépend aussi d'où est mis la macro.
A+
0
salut

merci pour ton code.

Ca bug à : Cells(Lig, 1) = TextBox1.Value

Je vais essayer de le modifier et reviens vers toi si je bloque.

Juste une chose peux tu m'expliquer cette partie là pour ma culture perso ;) :

Range("A65536").End(xlUp).Row + 1

Je vois plus ou moins ce que tu fais mais après range("a65536") je comprend pas.
Sinon ce que j'avais fais en haut (avec modif) fonctionnait mais c'était très lent... plus minute :D

Merci
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
26 juil. 2008 à 11:17
Lig = Range("A65536").End(xlUp).Row + 1

remplace..
While a <> "" 
Set a = a.Offset(1, 0) 
Wend 

Recherche 1ère ligne vide..
Quand arrèté sur la ligne Cells(Lig, 1) = TextBox1.Value
Tape dans la fenêtre exécution..
Print Lig et voir combien ca donne, cela arrive que cette fonction marche pas et il faut la remplacer par...
    Lig = Range("A1").SpecialCells(xlCellTypeLastCell).Row


Quand lig fonctionne tu tape dans exécution..
Print TextBox1.value >> enter
et tu dit ..

0