Formulaire en VBA dans feuille Excel

Résolu
Bonjour,

J'utilise plusieurs fichiers Excel qui ont un format bien determiné.
J'ai créé une macro qui exectute plusieurs actions sur le fichier Excel, et qui fait apparaitre une fenetre popup contenant un tout petit formulaire :
- Une action conditionnée : OUI ou NON
- Une zone de saisie

Mon probleme est que je ne sais pas exploiter ces infos une fois renseignées.
En clair j'aimerai que lorsque qu'on selectionne OUI cela supprime des données dans une collone de la feuille et que ce que l'on mette dans la zone de saisie soit collée dans toutes les lignes (contenant des infos) d'une colone ...

J'ai créé un UserForm, mis des boutons et tout mais ne sais ni quel code y mettre pour leur affecter des actions, ni comment recuperer ces dites actions dans la macro originale ...

Ps : vous aurez deviné que je suis un Noob en VBA ;)

--

CarTman SpiRit Is gOOd fOr You !

6 réponses

  1. Malheureusment avec ces informations, je ne peux te fournir un code qui te satisferait complétement!

    Par contre je peux te donner quelques informations.

    Dans un premier temps je suppose que tu as un bouton valider en bas de ton formulaire! Si tu double clic dessus tu aura acces au "Sub" qui correspond a l'action quand tu clilc sur le bouton. Il va falloir y mettre les actions que tu veux ici!

    Dans un premier temps, tes boucles if afin de voir si les champs de ton formulaire sont bien remplis. Imaginons que tu es mid deux TextBox dans ton formulaire :

    Private Sub CommandButton1_Click()
         if TextBox1.Value <> "" AND TextBox2 <> "" Then
              .....Ton code....
              Unload Userform1
         Else
              MsgBox("Tous les champs ne sont pas remplis")
         End If
    End Sub
    


    Ensuite passons a ta question principale....
    Pour utiliser les infos des tes case a cocher et zone de saisie il te suffit juste de reprendre son nom et de mettre ".value" à la fin

    sheets(1).cells(1,1) = TextBox1.Value
    if OptionButton.Value = False Then
    ...


    Enfin voila, je pense que tu as compris le truc!
    Ensuite pour ecrire dans excell bah il s'agit de la base de VBA

    Sheets(1).Cells(1,1) = "Ce que tu veux mettre dans la case"


    Sheets(1) pour dire que ce sera dans la feuille 1 de ton classeur
    Cells(1,1) pour dire que ce sera dans la cellule ligne 1 colonne 1

    Voila voila,
    Je sais pas si je peux aider plus mais commence a coder quelque chose puis si tu as des questions vient poster ton code ici...

    Ne sachant pas exactement ton souhait proprement dit, je ne peux pas t'aider plus pour le moment

    Mais hésites pas ;)
    0
    1. Merci bien c'est nickel je vais essayer !

      0
      1. Bon alors ça marche deja beaucoup mieux mais pas pour tout.

        En effet, lorsque que clique sur VALIDER il devrai mettre dans la colonne P a partir de la case P2 le contenu de la textbox si la case O correspondante n'est pas vide ... et non, ça n'ecrit pas... j'pige pas pourquoi !

        Private Sub Annuler_Click()
            Unload UserForm1
        End Sub
        Private Sub ref_OpenBat_Change()
            CodeOpenBat = ref_OpenBat.Value 'Récupères la valeur dans ta variable
        End Sub
        Private Sub suppr_NON_Click()
        
        End Sub
        Private Sub suppr_OUI_Click()
        
        End Sub
        Private Sub Valider_Click()
            Sheets("Arbo").Select
            
            'Supression des departements
            If suppr_OUI Then
                Sheets("Arbo").Select
                    Columns("D:D").Select
                    Application.CutCopyMode = False
                    Selection.ClearContents
                    Range("D1").Select
                    ActiveCell.FormulaR1C1 = "DEPARTEMENT"
                    With ActiveCell.Characters(Start:=1, Length:=12).Font
                        .Name = "Calibri"
                        .FontStyle = "Gras"
                        .Size = 8
                        .Strikethrough = False
                        .Superscript = False
                        .Subscript = False
                        .OutlineFont = False
                        .Shadow = False
                        .Underline = xlUnderlineStyleNone
                        .ColorIndex = 3
                    End With
                End If
                
                'inscription du CodeOpenBat
                For i = 2 To 1000
                    If Range("O" & i).Value = "" Then
                    Else
                        Range("P" & i).Value = CodeOpenBat
                    End If
                Next i
                
            'exit du popup
            Unload UserForm1
        End Sub
        
        


        0
        1. C'est bon j'ai trouvé, c'etait la variable CodeOpenBat qui n'etait pas declarée !
          0
          1. Pour info tu as du déclarer "CodeOpenBat" en variable global dans ton cas de figure...
            C'est cool ça marche, car il s'agit d'un petit programme.

            En gros, il faut eviter le plus possible de creer des variables globales, seulement le faire quand il n'y a pas d'autre choix!

            La par exemple tu n'est pas obligé de changé ta variable "CodeOpenBat" a chaque fois que tu met un caractere dans le TextBox! tu peux juste l'initialiser quand tu clic sur valider. Et ça t'économise une variable globale :D

            Nouveau code :

            Private Sub Annuler_Click() 
                Unload UserForm1 
            End Sub 
            Private Sub ref_OpenBat_Change() 
                CodeOpenBat = ref_OpenBat.Value 'Récupères la valeur dans ta variable 
            End Sub 
            
            Private Sub Valider_Click() 
                Dim CodeOpenBat As String 
            
                Sheets("Arbo").Select 
                 
                CodeOpenBat = ref_OpenBat.Value 'Récupères la valeur dans ta variable 
            
                'Supression des departements 
                If suppr_OUI Then 
                    Sheets("Arbo").Select 
                        Columns("D:D").Select 
                        Application.CutCopyMode = False 
                        Selection.ClearContents 
                        Range("D1").Select 
                        ActiveCell.FormulaR1C1 = "DEPARTEMENT" 
                        With ActiveCell.Characters(Start:=1, Length:=12).Font 
                            .Name = "Calibri" 
                            .FontStyle = "Gras" 
                            .Size = 8 
                            .Strikethrough = False 
                            .Superscript = False 
                            .Subscript = False 
                            .OutlineFont = False 
                            .Shadow = False 
                            .Underline = xlUnderlineStyleNone 
                            .ColorIndex = 3 
                        End With 
                    End If 
                     
                    'inscription du CodeOpenBat 
                    For i = 2 To 1000 
                        If Range("O" & i).Value = "" Then 
                        Else 
                            Range("P" & i).Value = CodeOpenBat 
                        End If 
                    Next i 
                     
                'exit du popup 
                Unload UserForm1 
            End Sub


            Bref, ce n'est qu'un détail mais c'est bien d'apprendre les bonnes manières dès le début
            0
            1. merci pour cette remarque ... le jeune padawan du VBA que je suis saura s'en souvenir ;)
              0