Ajout d'une nouvelle feuille + Bouton avec code

BEBER1212

XLDnaute Nouveau
Bonjour,

J'ai un fichier Excel dans lequel je rentre plusieurs invités :

Cijoint.fr - Service gratuit de dépôt de fichiers

Quand je rentre un invité il se crée un onglet avec son nom, qui se cache.
J'ai un bouton de recherche qui affiche cet onglet et crée un nouveau bouton.

Je voudrais que ce bouton soit doté d'une fonction qui ouvre une page (existante ou nouvelle). Mais je ne sais pas comment faire pour intégrer du code à un nouveau bouton créé automatiquement.
Je souhaiterais aussi modifier le nom de ce bouton "Modifier".
J'ai beau chercher sur le forum et avec Google, je ne trouve rien.
Si quelqu'un veut bien m'aider...

Merci.

Edit : Pour le nom du bouton, j'ai trouvé.
 
Dernière édition:

BEBER1212

XLDnaute Nouveau
Re : Ajout d'une nouvelle feuille + Bouton avec code

Re-bonjour,

Personne pour m'aider sur comment créer un bouton sur une nouvelle page, avec une instruction précise pour ce bouton ? :(

J'ai bien un début de code pour créer le bouton, mais je ne sais pas comment y ajouter l'instruction : ouvrir une feuille existante...

Code:
Private Sub Chercher_Click()
On Error Resume Next
    
Sheets(Range("B19").Value).Visible = 1
If Err <> 0 Then
   MsgBox "Pas d'invité avec ce nom dans la liste. Faites une autre recherche. Attention à l'orthographe et aux accents.", , "Message Erreur"

Else: Sheets(Range("B19").Value).Activate
With ActiveSheet
.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
        , DisplayAsIcon:=False, Left:=183.75, Top:=119.25, Width:=169.5, _
        Height:=79.5).Select
.OLEObjects("CommandButton1").Object.Caption = "Modifier"
End With
ActiveSheet.Shapes("CommandButton1").Select
End If
End Sub

Merci.
 

Macpoy

XLDnaute Impliqué
Re : Ajout d'une nouvelle feuille + Bouton avec code

bonsoir le forum, BEBER1212

et si ce bouton permettait d'ouvrir un Userform listant toutes les feuilles présentes !!

Code:
Je voudrais que ce bouton soit doté d'une fonction qui ouvre une page  (existante ou nouvelle)

est ce que cela vous conviendrais ?
 

BEBER1212

XLDnaute Nouveau
Re : Ajout d'une nouvelle feuille + Bouton avec code

Bonjour Macpoy,

Merci pour votre réponse. Je ne sais pas ce qu'est un Userform (je débute), donc je ne sais pas trop.
En fait je veux que mon bouton ouvre une feuille "Modification_invité" existante. (Dans le classeur joint cette feuille n'existait pas encore).

Merci.
 

Macpoy

XLDnaute Impliqué
Re : Ajout d'une nouvelle feuille + Bouton avec code

Re,

j'ai un peu bricolé avec vos quelques explications.
c'est loin d'être fini !!!
mais si cela vous convien, on peu tenter de finaliser.

Cijoint.fr - Service gratuit de dépôt de fichiers

@ plus
 

BEBER1212

XLDnaute Nouveau
Re : Ajout d'une nouvelle feuille + Bouton avec code

Bonjour Macpoy et le forum,

Merci pour ta solution. Ce n'est pas exactement ça que je souhaite, car je ne veux pas que l'utilisateur puisse voir tous les onglets.

Peux tu m'expliquer ton code, comme ça je pourrais essayer de voir quoi modifier pour faire ce que je veux ?

En fait au lieu de l'ouverture de ton UserForm avec ton bouton, je voudrais l'ouverture de la page "Modification".

Merci.
 

BEBER1212

XLDnaute Nouveau
Re : Ajout d'une nouvelle feuille + Bouton avec code

Au passage, je cherche aussi à savoir comment copier une ligne d'un onglet avec une valeur en O4, et rechercher dans un autre onglet cette valeur (même colonne, ligne différente), pour coller toute la ligne à la place.

Merci à tous.
 

Macpoy

XLDnaute Impliqué
Re : Ajout d'une nouvelle feuille + Bouton avec code

Bonsoir le forum, BEBER1212,

désolé de n'avoir répondu plus tôt à vos appels, mais les aléas de la vie font que je suis un peu moins disponible.

Code:
Peux tu m'expliquer ton code, comme ça je pourrais essayer de voir quoi  modifier pour faire ce que je veux ?

Code:
Sub Remplissage()
Dim i As Integer
    With UsFOnglet.CboOnglets
        .Clear
        .Value = ActiveSheet.Name
        For i = 1 To Worksheets.Count
            .AddItem Sheets(i).Name
        Next i
    End With
End Sub

ce bout de code permet de remplir le combobox du userform.

Code:
En fait au lieu de l'ouverture de ton UserForm avec ton bouton, je  voudrais l'ouverture de la page "Modification"

j'ai pas trouvé votre feuille modification, mais j'en ai pris une autre qu'il vous suffira d'adapter.
il suffit d'ajouter dans le module 1 ceci :

Code:
Sub affichdonnees()
Feuil5.Activate
End Sub

et de modifier la macro Chercher_Click comme ceci (en rouge):
Code:
Private Sub Chercher_Click()
On Error Resume Next
    
Sheets(Range("B19").Value).Visible = 1
If Err <> 0 Then
   MsgBox "Pas d'invité avec ce nom dans la liste. Faites une autre recherche. Attention à l'orthographe et aux accents.", , "Message Erreur"
End If
Sheets(Range("B19").Value).Activate
    ActiveSheet.Shapes.AddShape.Select
'    Selection.OnAction = "LanceUSF"
   [B][COLOR=Red] Selection.OnAction = "affichdonnees"[/COLOR][/B]
    Selection.Caption = "Bouton"

'ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
'        , DisplayAsIcon:=False, Left:=183.75, Top:=119.25, Width:=169.5, _
'        Height:=79.5).Select
'ActiveSheet.Shapes("CommandButton1").Select

End Sub

pour le reste, ben euh ... faut que je me penche dessus !!!
mais la..... comme dirait l'autre, j'ai la boite à réflexion qui est entrain de se mettre sur pause !!!

bonne nuit
@plus
 

BEBER1212

XLDnaute Nouveau
Re : Ajout d'une nouvelle feuille + Bouton avec code

Bonjour Macpoy, et les autres,

Merci pour ta réponse, même si je n'arrive pas à faire ce que je veux... :confused:

Pour être sûr : le ' en début de ligne indique qu'il s'agit d'un commentaire, donc pas d'action ?

Dans le code que tu me proposes, est ce que tu as toujours un UserForm ou non ?
Moi dans mon ficher, quand j'ouvre VB, je n'ai que les feuilles et les modules. Je n'ai pas le UsFOnglet et le UserformOnglets. Est ce qu'il les faut ?

Pour Info, je voudrais qu'une fois le bouton "Modifier" actionné (sur la feuille de l'invité, "A a" dans mon exemple), ça ouvre la feuille "Modification", sans repasser par un bouton sur un userForm.

Je te remets mon fichier que j'ai un peu modifié. Cette fois il y a la page "Modification".

Cijoint.fr - Service gratuit de dépôt de fichiers

Merci de ton aide.
 

BEBER1212

XLDnaute Nouveau
Re : Ajout d'une nouvelle feuille + Bouton avec code

En cherchant un peu plus, je suis tombé sur un code qui ajoute un bouton sur une feuille (ce que j'arrive à faire), et ajoute un code à ce bouton pour supprimer le contenu des cellules. Moi je voudrais ouvrir une feuille au lieu de supprimer ce contenu. Quelqu'un peut me dire ce que je dois changer dans ce code pour faire ça ?

Merci.

Code:
Sub AjoutCommandButton_Feuille()
    Dim Ws As Worksheet
    Dim Obj As OLEObject
    Dim laMacro As String
    Dim x As Integer
    
    'Ajout feuille
    Set Ws = Sheets.Add
        
    'Ajout CommandButton dans la feuille
    Set Obj = Ws.OLEObjects.Add("Forms.CommandButton.1")
    With Obj
        .Left = 50 'position horizontale
        .Top = 50 'position verticale
        .Width = 140 'largeur
        .Height = 30 'hauteur
        .Object.BackColor = RGB(235, 235, 200) 'Couleur de fond
        .Object.Caption = "Supprimer données feuille"
    End With
    
    'Paramètres pour la création de la macro:
    '(suppression contenu cellules)
    laMacro = "Sub CommandButton1_Click()" & vbCrLf
    laMacro = laMacro & "Cells.Clear" & vbCrLf
    laMacro = laMacro & "End Sub"
    
    With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
        x = .CountOfLines + 1
        .InsertLines x, laMacro
    End With
End Sub

PS : mon code à moi est :

Code:
Private Sub Chercher_Click()
Dim laMacro As String
Dim x As Integer
On Error Resume Next
    
Sheets(Range("B19").Value).Visible = 1
Application.ScreenUpdating = False
If Err <> 0 Then
   MsgBox "Pas d'invité avec ce nom dans la liste. Faites une autre recherche. Attention à l'orthographe et aux accents.", , "Message Erreur"

Else: Sheets(Range("B19").Value).Activate
Sheets("Recherche").Visible = 0
With ActiveSheet
.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
        , DisplayAsIcon:=False, Left:=183.75, Top:=119.25, Width:=169.5, _
        Height:=79.5).Select
.OLEObjects("CommandButton1").Object.Caption = "Modifier"
End With

laMacro = "Sub CommandButton1_Click()" & vbCrLf
laMacro = laMacro & "ouvre_modification" & vbCrLf
laMacro = laMacro & "End Sub"
 
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule
    x = .CountOfLines + 1
    .InsertLines x, laMacro
End With
Application.ScreenUpdating = True
End If
End Sub

Merci.
 

Macpoy

XLDnaute Impliqué
Re : Ajout d'une nouvelle feuille + Bouton avec code

bonsoir le forum, BEBER1212,

j'ai l'impression que finalement on repars dans une autre direction. pourquoi pas, mais un classeur exemple à modifier est toujours plus pratique que du code à corriger sans son environnement.

pour créer un bouton et lui affecter une macro je vous ai donné ceci

Code:
Private Sub Chercher_Click()
On Error Resume Next
    
Sheets(Range("B19").Value).Visible = 1
If Err <> 0 Then
   MsgBox "Pas d'invité avec ce nom dans la liste. Faites une autre recherche. Attention à l'orthographe et aux accents.", , "Message Erreur"
End If
Sheets(Range("B19").Value).Activate
    ActiveSheet.Shapes.AddShape.Select
   [B][COLOR=Red] Selection.OnAction = "affichdonnees"[/COLOR][/B]
    Selection.Caption = "Bouton"
End Sub

ça ne convenait pas ?
 

BEBER1212

XLDnaute Nouveau
Re : Ajout d'une nouvelle feuille + Bouton avec code

Bonjour Macpoy, et le reste du forum,

En fait le code que vous m'avez donné ne fait rien chez moi. Ou plutôt si, il affiche bien la page souhaitée : Sheets(Range("B19").Value) mais il ne me crée aucun bouton. Je ne peux donc pas ouvrir la page "Modification". :(
J'ai modifié légèrement la ligne contenant affichdonnees en affichmodification (Faut il tenir compte des majuscules?)
et dans la macro d'ouverture, Feuil5 par Feuil9.

Ce code pourrait en effet me convenir mais il ne fait rien chez moi. Est ce que ça marche chez vous ?

Mon fichier est dispo ici :
Cijoint.fr - Service gratuit de dépôt de fichiers

Merci. :) :) :)
 

BEBER1212

XLDnaute Nouveau
Re : Ajout d'une nouvelle feuille + Bouton avec code

Bonjour à tous.

J'ai eu la réponse à ma question, à savoir comment faire un bouton automatiquement sur un onglet, pour en ouvrir un autre. Dans mon code précédent, l'erreur se situait à la ligne :

Code:
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).CodeModule

Il fallait remplacer .Name par .CodeName

Au final, j'ai le code suivant :

Code:
    Private Sub Chercher_Click()
    Dim laMacro As String
    Dim x As Integer
    On Error Resume Next
       
    Sheets(Range("B19").Value).Visible = 1
    Application.ScreenUpdating = False
    If Err <> 0 Then
       MsgBox "Pas d'invité avec ce nom dans la liste. Faites une autre recherche. Attention à l'orthographe et aux accents.", , "Message Erreur"

    Else: Sheets(Range("B19").Value).Activate
    With ActiveSheet
    .OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _
            , DisplayAsIcon:=False, Left:=183.75, Top:=119.25, Width:=169.5, _
            Height:=79.5).Select
    .OLEObjects("CommandButton1").Object.Caption = "Modifier"
   
    End With


    laMacro = "Sub CommandButton1_Click()" & vbCrLf
    laMacro = laMacro & "Sheets(""Modification"").Visible=1" & vbCrLf
    laMacro = laMacro & "Sheets(""Modification"").Activate" & vbCrLf
    laMacro = laMacro & "End Sub"

     
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
        x = .CountOfLines + 1
        .InsertLines x, laMacro
    End With
    

    Application.ScreenUpdating = True
    End If
    End Sub


Merci MacPoy pour votre aide qui m'a appris pas mal de choses.
 

Staple1600

XLDnaute Barbatruc
Re : Ajout d'une nouvelle feuille + Bouton avec code

Bonsoir

J'ai eu la réponse à ma question
Sur quel forum ?

Sur celui-ci ou sur l'autre forum où tu as aussi posé la même question ... :rolleyes:

(Jadis, l'usage voulait qu'on signale le multipostage)

EDITION
:
J'ai trouvé ma réponse sur le forum de developpez.net
Tu oublies le 3ème forum ou ta question se trouve aussi...
 
Dernière édition:

Discussions similaires

Réponses
93
Affichages
2 K

Statistiques des forums

Discussions
312 789
Messages
2 092 119
Membres
105 218
dernier inscrit
erunsemur