Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème avec macro pour l'affichage d'un onglet

  • Initiateur de la discussion Initiateur de la discussion jofdm
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jofdm

XLDnaute Occasionnel
Bonjour ,
Dans le fichier joint, j'aimerais que, lorsque l'on clique sur le bouton "Valider", on affiche à l'écran l'onglet précédemment sélectionné dans le userform, que le message apparaisse alors, permettant ainsi de retourner sur la feuille menu et le userform vierge.
Merci d'avance pour votre aide
 

Pièces jointes

Re : Problème avec macro pour l'affichage d'un onglet

Bonsoir jofdm,

Si j'ai bien tout compris, ton code modifié :

Code:
Private Sub CommandButton1_Click()

Dim debut As Long, i As Integer

If TextBox1.Value = "" Then
MsgBox ("Veuillez saisir un n° de semaine")
Exit Sub
End If

With Sheets(ComboBox1.Value)
        .Activate
        debut = .Range("A65536").End(xlUp).Row 
        .Cells(debut + 1, "A").Value = OFS.TextBox1.Value
        .Cells(debut + 1, "B").Value = ComboBox2.Value
        .Cells(debut + 1, "C").Value = OFS.TextBox2.Value
        .Cells(debut + 1, "D").Value = OFS.TextBox12.Value
        .Cells(debut + 1, "E").Value = OFS.TextBox3.Value
        .Cells(debut + 1, "F").Value = OFS.TextBox13.Value
        .Cells(debut + 1, "G").Value = OFS.TextBox4.Value
        .Cells(debut + 1, "H").Value = OFS.TextBox14.Value
        .Cells(debut + 1, "I").Value = OFS.TextBox5.Value
        .Cells(debut + 1, "J").Value = OFS.TextBox15.Value
        .Cells(debut + 1, "K").Value = OFS.TextBox6.Value
        .Cells(debut + 1, "L").Value = OFS.TextBox16.Value
        .Cells(debut + 1, "M").Value = OFS.TextBox7.Value
        .Cells(debut + 1, "N").Value = OFS.TextBox17.Value
        .Cells(debut + 1, "O").Value = OFS.TextBox8.Value
        .Cells(debut + 1, "P").Value = OFS.TextBox18.Value
        .Cells(debut + 1, "Q").Value = OFS.TextBox9.Value
        .Cells(debut + 1, "R").Value = OFS.TextBox19.Value
        .Cells(debut + 1, "S").Value = OFS.TextBox10.Value
        .Cells(debut + 1, "T").Value = OFS.TextBox20.Value
        .Cells(debut + 1, "U").Value = OFS.TextBox11.Value
        .Cells(debut + 1, "V").Value = OFS.TextBox21.Value
        
        Application.ScreenUpdating = False
        .Range("A3:V65535").Sort Key1:=.Range("A3"), Order1:=xlDescending, Header:=xlGuess, _
                OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                DataOption1:=xlSortNormal
        .Range("A" & debut).Select
        Application.ScreenUpdating = True
        Me.Hide
        MsgBox ("Saisie réalisée avec succès")
        
End With

For i = 1 To 21
 Me.Controls("TextBox" & i) = ""
Next

ComboBox1.ListIndex = -1
ComboBox2.ListIndex = -1
Sheets("Menu").Select
Me.Show

End Sub
Je l'ai un peu beaucoup simplifier.🙂
De même enlève l'instruction: Application.ScreenUpdating = False de ta macro pour ouvrir le Userform.
Cette instruction gèle l'écran, tu ne peut donc pas changer de feuille.

Bonne soirée
 
Dernière édition:
Re : Problème avec macro pour l'affichage d'un onglet

Merci beaucoup pour ton aide bqtr, voilà quelques lignes de code supplémentaires qui vont m'aider à progresser.
Question subsidiaire : j'ai posté un autre message en faisant référence à la bataille navale, ceci car je souhaite localiser une cellule.
Banzai64 m'a donné une solution mais en fait, je voulais faire ça au travers d'un userform.
Mon souci est le suivant : si je sais faire une boucle avec une variable pour retrouver le n° de ligne, je ne vois pas trop comment faire avec les colonnes (problème de correspondance entre lettre et désignant la colonne et la variable du compteur).
Si tu as l'astuce, je suis preneur.
Bonne soirée et @+ sur le forum
 
Re : Problème avec macro pour l'affichage d'un onglet

Re,

Pour boucler sur une colonne, c'est la même chose que pour une ligne :

Ex : de A1 à G1 tape des valeurs, en A3 entre une valeur qui existe dans la plage précédemment saisie, puis lance la macro.

Code:
Sub Boucle_Colonne()

Dim i As Byte
Dim ValCherchee

ValCherchee = Cells(3, 1)
For i = 1 To 7 ' de la colonne A à G
 If Cells(1, i) = ValCherchee Then Cells(1, i).Select
Next

End Sub
Tu peux aussi imbriquer des lignes et des colonnes dans une boucle

Rajoute des valeurs de A2 à G2 , entre une valeur recherchée en A3 et lance cette macro.

Code:
Sub Boucle_Colonne()

Dim i As Byte, K as long
Dim ValCherchee

ValCherchee = Cells(3, 1)
For i = 1 To 7 'de la colonne A à G
  For k = 1 To 2 ' de la ligne 1 à 2
    If Cells(k, i) = ValCherchee Then Cells(k, i).Select
  Next k
Next i

End Sub
Cells(1,1) correspond à Cells(ligne1,colonne1)
Comme les lignes, les colonnes sont numérotées de 1 à 256 (sauf Excel 2007), même si elles s'affichent avec des lettres.

Bonne soirée
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Contrôle sur date
Réponses
8
Affichages
409
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…