création de classeur

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 !

grisan29

XLDnaute Accro
bonjour a tous

quel code peut-on mettre derrière un bouton sur un usf pour créer un classeur(workbook) a 1 feuille(worksheet) automatiquement en lui donnant le nom qui est dans la liste d'une combobox

Merci de vos solutions

Pascal
 
Dernière édition:
Re : création de classeur

RE
non je n'avais pas vu ta dernière macro, j'ai essayer comme tu le préconise et cela fonctionne bien sauf que le nom du fournisseur ne se mets pas dans la cellule "B5" de la feuille crée, mais dans la cellule "B5" d'un autre classeur
donc voici comment j'ai adapter ta solution avec un souci car des arrays je n'en connais que pour alimenter une combobox
Code:
Private Sub CommandButton2_Click()
Dim chemin$
Dim acell, vcell, i As Byte
chemin = "c:\facturation-test\commandes\" 'chemin d'accès à adapter
On Error Resume Next 'par exemple si ComboBox1 est vide
With Workbooks.Add(xlWBATWorksheet).Sheets(1)
.[B1].ColumnWidth = 43.67
  .[C1].ColumnWidth = 3.67
  .[D1].ColumnWidth = 4.67
  .[E1].ColumnWidth = 5.67
  .[F1].ColumnWidth = 10.67
  .[G1].ColumnWidth = 12.67
  .[H1].ColumnWidth = 4
  .[B5] = ComboBox1 'en-tête
  
    With .[A1]
    .RowHeight = 27
    .ColumnWidth = 12.75
    .HorizontalAlignment = xlCenter
    .VerticalAlignment = xlCenter
  End With
'""""""""""""""""""""""""""""""""""""""""""""""""""
'Sub autrefaconderemplircellules()issu de staple1600
.Name = ComboBox1
acell = Array("A5", "A6", "B1", "B2", "B3", "B4", "B7", "C1", "C2", "C3", "C4", "C7", "D7", "F2", "F3")
vcell = Array("Fournisseurs", "N° d'offre", "entreprise", "Affaire suivi par :  Pascal", "adresse", "cp et ville", "désignation", _
"Bon de commande n°:", "ville le :", "début début travaux:", "référence client", "Unité", "quantité", Date, Date + 40)
With Workbooks.Add(xlWBATWorksheet).Sheets(1)
    For i = LBound(acell) To UBound(acell)
    .Range(acell(i)) = vcell(i)
    Next i
End With
'End Sub
'""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    
  Range("B1:B7,A5:A6,C1:F4,C7:D7,C5:F5").Borders.LineStyle = 1
    Range("C5:F5").MergeCells = True
  'suite des mises en forme de la feuille
  .Parent.SaveAs chemin & ComboBox1
  '.Parent.Close False 'facultatif
End With
End Sub
pascal
 
Re : création de classeur

Re


C'est logique 😉
Tu as laissé cette ligne en double 😉
With Workbooks.Add(xlWBATWorksheet).Sheets(1)
Tu vois ce que je veux dire ?
(Ma macro précédente était là pour illustrer pas pour en gfaire un copier/coller intégral dans ta macro initiale 😉)
 
Re : création de classeur

Re


Cela devrait presque mieux marcher ainsi 😉
sauf que tu n'as pas respecter ce que je disais avec mon * dans le précédent message 🙄
*: uniquement les cellules avec des strings pour éviter d'éventuelles surprises.
Donc pas de Date et de Date +40 dans l'array
Je te laisse donc faire les dernières modifs
Code VB:
Private Sub CommandButton2_Click()
Dim chemin$, acell, vcell, i As Byte
chemin = "c:\facturation-test\commandes\" 'chemin d'accès à adapter
On Error Resume Next 'par exemple si ComboBox1 est vide
With Workbooks.Add(xlWBATWorksheet).Sheets(1)
.[B1].ColumnWidth = 43.67: .[C1].ColumnWidth = 3.67
.[D1].ColumnWidth = 4.67: .[E1].ColumnWidth = 5.67
.[F1].ColumnWidth = 10.67: .[G1].ColumnWidth = 12.67
.[H1].ColumnWidth = 4: .[B5] = ComboBox1 'en-tête
With .[A1]
.RowHeight = 27
.ColumnWidth = 12.75
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
.Name = ComboBox1
acell = Array("A5", "A6", "B1", "B2", "B3", "B4", "B7", "C1", "C2", "C3", "C4", "C7", "D7", "F2", "F3")
vcell = Array("Fournisseurs", "N° d'offre", "entreprise", "Affaire suivi par : Pascal", "adresse", "cp et ville", "désignation", _
"Bon de commande n°:", "ville le :", "début début travaux:", "référence client", "Unité", "quantité", Date, Date + 40)
For i = LBound(acell) To UBound(acell)
.Range(acell(i)) = vcell(i)
Next i
.Range("B1:B7,A5:A6,C1:F4,C77,C5:F5").Borders.LineStyle = 1
.Range("C5:F5").MergeCells = True
'suite des mises en forme de la feuille
.Parent.SaveAs chemin & ComboBox1
'.Parent.Close False 'facultatif
End With
End Sub
 
Dernière édition:
Re : création de classeur

RE
voila la dernière modif effectuée pour contrôle et qui fonctionne merci
Code:
Private Sub CommandButton2_Click()
Dim chemin$, acell, vcell, i As Byte
chemin = "c:\facturation-test\commandes\" 'chemin d'accès à adapter
On Error Resume Next 'par exemple si ComboBox1 est vide
With Workbooks.Add(xlWBATWorksheet).Sheets(1)
.[B1].ColumnWidth = 43.67: .[C1].ColumnWidth = 3.67
.[D1].ColumnWidth = 4.67: .[E1].ColumnWidth = 5.67
.[F1].ColumnWidth = 10.67: .[G1].ColumnWidth = 12.67
.[H1].ColumnWidth = 4: .[B5] = ComboBox1 'en-tête
With .[A1]
.RowHeight = 27
.ColumnWidth = 12.75
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
.Name = ComboBox1
.[F2] = Date
.[F3] = Date + 40
acell = Array("A5", "A6", "B1", "B2", "B3", "B4", "B7", "C1", "C2", "C3", "C4", "C7", "D7")
vcell = Array("Fournisseurs", "N° d'offre", "entreprise", "Affaire suivi par : Pascal", "adresse", "cp et ville", "désignation", _
"Bon de commande n°:", "ville le :", "début début travaux:", "référence client", "Unité", "quantité")
For i = LBound(acell) To UBound(acell)
.Range(acell(i)) = vcell(i)
Next i
.Range("B1:B7,A5:A6,C1:F4,C7:D7,C5:F5").Borders.LineStyle = 1
.Range("C5:F5").MergeCells = True
'suite des mises en forme de la feuille
.Parent.SaveAs chemin & ComboBox1
'.Parent.Close False 'facultatif
End With
End Sub

Pascal
 
- 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

Réponses
7
Affichages
266
Réponses
8
Affichages
314
Réponses
1
Affichages
285
W
Réponses
12
Affichages
366
Retour