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

XL 2016 VBA Créer un bouton de commande + macro dans useform

Samtchevsky

XLDnaute Nouveau
Bonjour à tous,

Je suis en train d'écrire des macros dans un useform.
L'useform consiste (en partie) a créer sur la feuille "Accueil" dans la dernière ligne du tableau, un bouton de commande nommée "Dnuméro d'immeuble_numéro de chantier" avec comme texte "Dossier", code ci-dessous:
Code:
Sheets("Accueil").Cells(Lg, "I").Select
Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
Link:=False, DisplayAsIcon:=False, Left:=ActiveCell.Left, Top:=ActiveCell.Top, Width:=ActiveCell.Width, _
Height:=ActiveCell.Height)
Obj.Name = "D" & Sheets("Accueil").Cells(Lg, "B").Value & "_" & Sheets("Accueil").Cells(Lg, "F").Value
ActiveSheet.OLEObjects("D" & Sheets("Accueil").Cells(Lg, "B").Value & "_" & Sheets("Accueil").Cells(Lg, "F").Value).Object.Caption = "Dossier"

Je crée ensuite une nouvelle feuille nommé "Dnuméro d'immeuble_numéro de chantier" et je retire le quadrillage:
Code:
Sheets.Add After:=Worksheets("Accueil")
ActiveSheet.Name = "D" & Sheets("Accueil").Cells(Lg, "B").Value & "_" & Sheets("Accueil").Cells(Lg, "F").Value
ActiveWindow.DisplayGridlines = False

Je souhaiterais donc continuer ma macro pour insérer la macro ci-dessous sur le bouton créé ci-dessus.

Cette macro se nomme "Dnuméro d'immeuble_numéro de chantier" et me permet d'afficher la feuille nouvellement créée, allez dessus et masqué la feuille "Accueil":
Code:
' Sub "D" & Sheets("Accueil").Cells(Lg, "B").Value & "_" & Sheets("Accueil").Cells(Lg, "F").Value()
' ActiveSheet.Visible = False
' Sheets("D" & Sheets("Accueil").Cells(Lg, "B").Value & "_" & Sheets("Accueil").Cells(Lg, "F").Value").Visible = True
' Sheets("D" & Sheets("Accueil").Cells(Lg, "B").Value & "_" & Sheets("Accueil").Cells(Lg, "F").Value").Select
' End Sub

Dans l'attente d'un petit coup de main^^
 

Samtchevsky

XLDnaute Nouveau
@Staple1600
Désolé, tu trouveras le fichier modifié en PJ.
J'ai passé pas mal de code en texte afin d'éviter que la macro aille chercher des liens externes au fichier en lui-même...
J'ai également supprimer la macro de création du dossier qui comportait des informations particulières.

Pour ton information, la première ligne du tableau et la page associée ont été faites manuellement, je cherche justement à recréer entièrement tout ceci par l'useform.

Je reste à ta disposition.
 

Pièces jointes

  • Fichier de suivi.xlsm
    108.2 KB · Affichages: 53

Staple1600

XLDnaute Barbatruc
Re

Une suggestion de syntaxe simplifiée pour créer une feuille
(PS: Ce n'est qu'une macro de test, à toi de la remanier pour l'intégrer dans ton projet)
VB:
Sub Suggestion()
Dim Lg As Long, f As Worksheet
Set f = Worksheets("Accueil")
'Lg = f.Cells(Rows.Count, 2).End(xlUp)(2).Row 'vide
'MsgBox Cells(Lg, 2)
Lg = f.Cells(Rows.Count, 2).End(xlUp).Row
' Création d 'une feuille
Sheets.Add(After:=f).Name = "D" & f.Cells(Lg, "B") & "_" & f.Cells(Lg, "F")
End Sub
 

Samtchevsky

XLDnaute Nouveau
@Staple1600

Pour As Long, je vais faire la modification.
Pour ta suggestion, c'est effectivement plus clair. Je vais voir pour l'intégrer.

Merci de prendre le temps de regarder les autres macros.
Je n'y connais pas grand chose. Je compose mes macros en prenant ce qui m'intéresse sur les forums et remanie avec mes connaissances^^
 

Samtchevsky

XLDnaute Nouveau
Je t'avoue que j'ai pensé à un lien hypertexte!
Et idem dans la page travaux pour les autres boutons que je vais devoir créer et également rattacher à des macros (dans le module tu verras une macro qui ouvre un autre fichier Excel situé ailleurs).

Mais je trouve que cela fait beaucoup plus pro avec un bouton et que le rendu est vraiment meilleur en présentation.
C'est l'interface centrale qui va me permettre de gérer l'ensemble des dossiers que je vais créer.
 

Staple1600

XLDnaute Barbatruc
Re

Un dernier code pour la route (avant d'aller au dodo )
C'est une autre manière d'écrire le code du bouton Créér
VB:
Private Sub Créer_Click()
' Intégration des valeurs de l'useform
Dim Lg As Long, i%, f As Worksheet
Set f = Sheets("Accueil")
Lg ="D" & f.Cells(Rows.Count, 2).End(xlUp).Row + 1
For i = 2 To 7
f.Cells(Lg, i) = Me.Controls("TextBox" & i - 1)
Next
'Création d'une feuille
With Sheets.Add(After:=f)
  .Name = f.Cells(Lg, 2) & "_" & f.Cells(Lg, 6)
  .Cells(2, 1).Resize(6).Font.Bold = True
  .Cells(2, 1).Resize(6) = _
      Application.Transpose(Array("Code IRSI", "Site", "Adresse", vbNullString, "Numéro Travaux", "Intitulé Travaux"))
  .Cells(2, 3).Resize(6) = _
      Application.Transpose(f.Cells(Lg, 2).Resize(, 6))
End With
'Afficher l'image de la feuille
'...
'ici reprendre le code initial
'...
'Unload ferme l'UserForm
Unload Me
End Sub
Comme c'est un peu plus complexe, je suppose que tu auras des questions
J'y répondrai volontiers

Bonne nuit à tous
 
Dernière édition:

Samtchevsky

XLDnaute Nouveau
Non ça va j'ai bien compris ce que tu as fait. Je sais lire le vba mais je ne sais pas l'écrire^^
Je te remercie pour ces simplifications^^
J'ai simplement recorriger le nommage de le feuille ou le "D" avait disparu et l'alignement centré du texte colonne D.

Tu as une idée par contre pour la création du bouton "Dossier" + intégration de la macro qui permet d'aller sur la feuille créée?
J'ai vu que tu me l'avais supprimé du coup^^

Bonne nuit à toi.
 
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…