Codage boutons Userform et affichage plein écran

Bonjour à toutes et tous,

Je n'arrive plus à progresser dans la programmation de mon USERFORM / Excel (après modification d'un modèle récupéré d'internet).

en tant que débutant en Vba / Excel, j'ai fait une bonne partie du boulot mais il y'a encore des choses que je ne sais pas faire.

Mon problème est j'aimerais :

- faire fonctionner les boutons SUPPRIMER, RECHERCHE, MODIFIER, RECULER et AVANCER ;

Aussi, pour contrôler l'accès aux autres feuillets, j'aimerais avoir des aller-retour tels que :

  • un bouton STATISTIQUES sur le Userform qui ouvre le feuillet STATS par mot de passe et ferme le USERFORM ;
  • un bouton (ou autre) sur le feuillet STATS qui ferme ce dernier et ouvre le USERFORM ;
  • un bouton ENREGISTREMENTS sur le Userform qui ouvre le feuillet DONNEES par mot de passe et ferme le USERFORM ;
  • un bouton (ou autre) sur le feuillet DONNEES qui ferme ce dernier et ouvre le USERFORM ;

Au lancement du fichier STATOUR, j'aimerais que :

- le USERFORM s'ouvre seul (sans la croix et la bande bleu) pour donner l'impression d'une application non rattachée à Excel ;

- le USERFORM s'ouvrir en PLEIN ECRAN (avec ComboBox, TexBox affichés proportionnellement à l'écran) sur n'importe quel PC (fixe, portable) et Mac.

Ci-joint mon fichier

Merci d'avance en cette période de confinement quasi planétaire,

82statour.xlsm (37.44 Ko)

Bonjour,

Seulement 3 messages et déjà au bout

Peut-être une solution ICI

Bonjour,

Merci Bruno M45 pour le conseil. Je serai bientàot aussi bon que toi en vba / Excel . Hélas, j'avais déjà exploité le lien envoyé. Le problème est que je ne parviens pas encore à exploiter facilement les connaissances acquises pour résoudre un problème concret. Si tu regardes mon fichier-joint, tu constateras que j'ai quasiment pu réussir à adapter des bouts de code récupérés sur le web (y compris cette plateforme).

Exemple d'adaptation de code au Userform réussi : ]

Option Explicit 'DECLARATION des variables
                'Me = formulaire actif. On peut s'en passer lorsque le BOUTON est dans le formulaire concerné
Dim Ws As Worksheet 'Variable pour un Objet Worksheet en PUBLIC pour tous les Controles de cet UserForm

Private Sub UserForm_Initialize() 'OUVERTURE du formulaire

Dim J As Long 'déclare la variable J pour LIGNE
Dim I As Integer 'déclare la variable I pour COLONNE

'Affiche la liste déroulante intitulée "Recherche par DATE" de la colonne A de l'onglet DONNEES

Set Ws = Sheets("DONNEES") 'Stock le nom DONNEES dans une variable nommée WS.
I = Ws.Range("A" & Rows.Count).End(xlUp).Row 'récupère toutes les cellules de A à partir de la ligne 2 (la ligne 1 = titres)
                                             'jusquà la dernière cellule NON VIDE en partant du bas vers le haut

For J = 2 To I             'Démarre à la ligne 2 jusqu'à la dernière ligne définie dans la variable J
With Me.ComboBox1
.AddItem Ws.Range("A" & J) 'spécifie les données à ajouter selon leur ligne de positionnement

End With
Next J

'Affiche la liste déroulante intitulée "Deplace" de la colonne A de l'onglet LISTE

Set Ws = Sheets("LISTE") 'Stocke le nom LISTE dans la variable nommée WS.
I = Ws.Range("A" & Rows.Count).End(xlUp).Row

For J = 2 To I
 With Me.ComboBox2
    .AddItem Ws.Range("A" & J)

End With
Next J

'Ainsi de suite

'Affiche la liste déroulante intitulée "Embar" de la colonne B de longlet LISTE

Set Ws = Sheets("LISTE")
I = Ws.Range("B" & Rows.Count).End(xlUp).Row

For J = 2 To I
 With Me.ComboBox3
    .AddItem Ws.Range("B" & J)

End With
Next J

'Affiche la liste déroulante intitulée "Nation" de la colonne C de l'onglet LISTE

Set Ws = Sheets("LISTE")
I = Ws.Range("C" & Rows.Count).End(xlUp).Row

For J = 2 To I
 With Me.ComboBox4
    .AddItem Ws.Range("C" & J)

End With
Next J

'Affiche la liste déroulante intitulée "Prof" de la colonne D de l'onglet LISTE

Set Ws = Sheets("LISTE")
I = Ws.Range("D" & Rows.Count).End(xlUp).Row

For J = 2 To I
 With Me.ComboBox5
    .AddItem Ws.Range("D" & J)

End With
Next J

'Affiche la liste déroulante intitulée "PaysResid" de la colonne E de l'onglet LISTE

Set Ws = Sheets("LISTE")
I = Ws.Range("E" & Rows.Count).End(xlUp).Row

For J = 2 To I
 With Me.ComboBox6
    .AddItem Ws.Range("E" & J)

End With
Next J

'Affiche la liste déroulante intulée "Sexe" de la colonne F de l'onglet LISTE

Set Ws = Sheets("LISTE")
I = Ws.Range("F" & Rows.Count).End(xlUp).Row

For J = 2 To I
 With Me.ComboBox7
    .AddItem Ws.Range("F" & J)

End With
Next J

'Affiche la liste déroulante intitulée "MotifVoyage" de la colonne G de l'onglet LISTE

Set Ws = Sheets("LISTE")
I = Ws.Range("G" & Rows.Count).End(xlUp).Row

For J = 2 To I
 With Me.ComboBox8
    .AddItem Ws.Range("G" & J)

End With
Next J

'Affiche la liste déroulante intitulée "ModeHeber" de la colonne H de l'onglet LISTE

Set Ws = Sheets("LISTE")
I = Ws.Range("H" & Rows.Count).End(xlUp).Row

For J = 2 To I
 With Me.ComboBox9
    .AddItem Ws.Range("H" & J)

End With
Next J

End Sub

Private Sub CommandButton3_Click() 'Bouton ENREGISTRER

Dim L As Integer 'Ligne
'condition : si oui au message
If MsgBox("Etes-vous certain de vouloir INSERER ce nouveau contact ?", vbYesNo, "Demande de confirmation") = vbYes Then
L = Sheets("DONNEES").Range("A" & Rows.Count).End(xlUp).Row + 1 'Position sur la dernière ligne NON VIDE de la colonne A

Range("A" & L).Value = ComboBox1 'Insère le contenu de "recherche par Date" dans DONNEES à la colonne A ("Date")
Range("B" & L).Value = ComboBox2 'Insère le contenu de "Deplace" (colonne A de LISTE) dans B ("Déplacement") de DONNEES
                                 'Ainsi de suite avec :
Range("C" & L).Value = ComboBox3 '"Embar"
Range("D" & L).Value = ComboBox4 '"Nation"
Range("E" & L).Value = ComboBox5 '"Prof"
Range("F" & L).Value = ComboBox6 '"PaysResid"
Range("G" & L).Value = TextBox11 'Insère le contenu de "Durée du séjour" dans DONNEES en G
Range("H" & L).Value = TextBox7  'Insère le contenu de "Date de naissance" dans DONNEES en H
Range("I" & L).Value = ComboBox7 '"Sexe"
Range("J" & L).Value = ComboBox8 '"MotifVoya"
Range("K" & L).Value = ComboBox9 '"ModeHeber"

End If

'Code permettant de modifier le format de la plage de cellule en format nombre
'With Ws.Range("F2:F10")
'.NumberFormat = "0"
'.Value = .Value
'End With

'Affiche une boîte de message
MsgBox ("Produit inséré dans le fichier sélectionné") 'Informe que le présent contact est insérer dans Donnees
Unload Me 'Vide et ferme l'Userform (formulaire)
UserForm1.Show 'Affiche le formulaire

End Sub 

Exemple d'adaptation de code au Userform non réussi (et je me demande pourquoi !?) :

Private Sub ComboBox1_Change() 'Liste déroulante RECHERCHE (par DATE en A).
Dim ligne As Long
Dim I As Integer

'ComboBox1.ColumnCount = 1 'Indique une colonne. On peut s'en passer

If Me.ComboBox1.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox1.ListIndex + 2

If Me.ComboBox2.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox2.ListIndex + 2

If Me.ComboBox3.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox3.ListIndex + 2

If Me.ComboBox4.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox4.ListIndex + 2

If Me.ComboBox5.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox5.ListIndex + 2

If Me.ComboBox6.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox6.ListIndex + 2

If Me.ComboBox7.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox7.ListIndex + 2

If Me.ComboBox8.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox8.ListIndex + 2

If Me.ComboBox9.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox9.ListIndex + 2

For I = 1 To 2

Me.Controls("TextBox" & I) = Ws.Cells(ligne, I + 1)
Next I

End Sub

Private Sub CommandButton4_Click() 'Bouton SUPPRIMER

'Supprimer la ligne sélectionnée
Dim L As Long
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
L = Me.ComboBox1.ListIndex + 2
Ws.Rows(L).Delete

End Sub

Private Sub CommandButton2_Click() 'Bouton MODIFIER
If MsgBox("Etes-vous certain de vouloir modifier ce produit ?", vbYesNo, "Demande de confirmation") = vbYes Then
Dim ligne As Long
Dim I As Integer

If Me.ComboBox1.ListIndex = -1 Then Exit Sub 'On sort si pas de sélection
ligne = Me.ComboBox1.ListIndex + 2 'est la ligne de la ComboBox1. Si on place 2 ou 3, il y aura rajout de lignes

If Me.ComboBox2.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox2.ListIndex + 2

If Me.ComboBox3.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox3.ListIndex + 2

If Me.ComboBox4.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox4.ListIndex + 2

If Me.ComboBox5.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox5.ListIndex + 2

If Me.ComboBox6.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox6.ListIndex + 2

If Me.ComboBox7.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox7.ListIndex + 2

If Me.ComboBox8.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox8.ListIndex + 2

If Me.ComboBox9.ListIndex = -1 Then Exit Sub
ligne = Me.ComboBox9.ListIndex + 2

For I = 1 To 2
If Me.Controls("TextBox" & I).Visible = True Then
Ws.Cells(ligne, I + 1) = Me.Controls("TextBox" & I)
End If
Next I
End If

'Code permettant de modifier le format de la plage de cellule en format nombre
'With Ws.Range("D2:D10") 'Inutile pour l'instant
'.NumberFormat = "0"
'.Value = .Value
'End With

End Sub 

Au sujet de l'affichage du Userform en plein écran, il y' a plusieurs codes que je trouve incomplet et qui donne des résultats comme userform : figé ; qui ne fonctionnent pas ou difficile à adapter dans un autre contexte.

Quelqu'un peut-il me venir en aide?

Merci d'avance,

Rechercher des sujets similaires à "codage boutons userform affichage plein ecran"