Formulaire en VBA dans feuille Excel

Résolu
cartman1706 Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   -  
cartman1706 Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   -
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. Submin Messages postés 463 Statut Membre 226
     
    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
  2. cartman1706 Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   37
     
    Merci bien c'est nickel je vais essayer !

    0
  3. cartman1706 Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   37
     
    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
  4. cartman1706 Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   37
     
    C'est bon j'ai trouvé, c'etait la variable CodeOpenBat qui n'etait pas declarée !
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Submin Messages postés 463 Statut Membre 226
     
    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
  7. cartman1706 Messages postés 282 Date d'inscription   Statut Membre Dernière intervention   37
     
    merci pour cette remarque ... le jeune padawan du VBA que je suis saura s'en souvenir ;)
    0