Userformn vba et excel

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
Configuration: Windows 2000
Internet Explorer 6.0

9 réponses

  1. Contributeur
    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. Contributeur
      +1
  2. Contributeur
    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+
    1. Contributeur
      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
      1. 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.
        1. J'ai deja repondu a ta première question oui ca marche pour l'autre sub creation_formateur dans la feuille code de usf
          1. Contributeur
            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+
            1. 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
              1. Contributeur
                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 ..