Probleme. en créant un nouveau fichier j'en ai deux

Bonjour

Je suis vraiment débutant, depuis 1 mois car pour mon nouveau travail, j'ai des tâches répétitives à faire.

J'ai eu des difficultés, mon code n' est pas académique, il n est pas fini, il fonctionne mais avec un beug.

Le but est de créer des bons de commande via un user form

Je renseigne les initiales du donneur d'ordre, le n° du d'affection du dernier bon, et l'année

quand je click sur validez, j'ai une nouvelle feuille qui se crée en copiant les valeurs et la largeur des colonnes (cela marche très bien) la feuille se nomme COPIE

là ou ca merdouille, je veux créer un nouveau dossier copiant Copie (valeur et largeur de colonne), le fichier se fait sans soucis.

pour l'instant je marque "bonjour" dedans en A1, je lui donne un chemin pour l enregistrer et il se nomme "n° affectation. - 18 - initiale du donneur d'ordre.

mon problème. c 'est qu'en ouvrant le fichier crée j ai une feuille qui s'ouvre. ok ce que je veux et j 'en ai un autre vierge indésirable

Mon code n'est pas du top du top merci de votre compréhension

Private Sub CommandButton1_Click()

Dim j As Integer

Dim i As Integer

i = 0

j = Me.ComboBoxNBREBON.Value 'nombre de bons a créer

k = Sheets("ADZA").Range("F2").Value

Sheets("ADZA").Activate

Range("F3").Select

ActiveCell = Label5.Caption

Do While i < j

Sheets("ADZA").Range("F2") = Sheets("ADZA").Range("F2").Value + 1

Sheets.Add.Name = "COPIE"

Worksheets("COPIE").Activate

Worksheets("FEUILLEVIERGE").Range("A1:K41").Copy (Worksheets("COPIE").Range("A1:K41"))

Worksheets("FEUILLEVIERGE").Columns.Range("A:K").Copy

Worksheets("COPIE").Columns.Range("A:K").PasteSpecial (xlPasteFormats)

Range("J2").Select

ActiveCell = Sheets("ADZA").Range("F2").Value & "-" & Sheets("ADZA").Range("F3").Value & "-" & Sheets("ADZA").Range("F4").Value

Dim App As New Excel.Application

Dim Wbk As Excel.Workbook

Set Wbk = App.Workbooks.Add

With Wbk.Sheets(1)

.Range("A1") = "bonjour"

End With

Dim P As String

P = Sheets("ADZA").Range("F2").Value & "-" & Sheets("ADZA").Range("F3").Value & "-" & Sheets("ADZA").Range("F4").Value

Wbk.SaveAs Filename:="C:\Users\nono\Desktop\BON1000\" & P & ".xlsx"

Wbk.Close

Set Wbk = Nothing

Set App = Nothing

Application.DisplayAlerts = False

Worksheets("COPIE").Delete

Application.DisplayAlerts = True

i = i + 1

Loop

Unload Me

End Sub

pardon. je fait un feuille nommée Copie temporaire, et je veux copier en valeur et en largeur de colonne cette feuille dans un nouveau fichier

Bonsoir,

Ce que tu veux faire est simple, à partir du moment où tu choisis la voie de la simplicité. Tu veux créer des bons de commandes ? Tu établis un modèle à partir duquel tu pourras en générer autant que tu veux le plus facilement du monde.

Bien que :

1) ton code n'est pas indenté, ce qui révèle peu de pratique dans la lecture de code en te souciant d'interpréter exactement ce que tu lis (dans ce cas tu commencerais à te soucier de l'indentation)

2) des variables non déclarées, et pas toutes déclarées systématiquement en tête de procédure, soit non respect d'une règle de base dont l'intérêt est établi ; pire des déclarations en cours d'exécution et incluses dans une boucle, là on se demande si tu sais bien ce que tu fais...

3) initialisation d'une variable numérique à 0 : qui montre que tu ignores que la variable, déclarée de type Integer a alors une valeur qui est 0 (par défaut), valeur que tu n'as nullement modifiée et qu'il est donc inutile de lui affecter puisqu'elle l'a déjà

4) utilisation d'Activate et Select, tu n'as donc pas encore appris qu'il s'agit d'opérations inutiles et parasites qui ne font que prendre du temps sans rien en retour

cela sur les quelques premières lignes de ton code, mais la liste s'allongerait si on poursuit l'examen en détail jusqu'au bout (je peux le cas échéant...), mais on ne peut pas dire que ton code soit foncièrement mauvais, il reflète un effort de bien faire, mais en abordant l'objectif de façon inadéquate avec des éléments que tu ne maîtrises pas.

Tu travailles en VBA avec Excel, si à partir de là tu avais besoin d'intervenir sur Word, il serait logique que tu suscite une instance de l'application Word... mais étant sur Excel tu n'as aucun besoin de générer une nouvelle instance d'Excel puisque tu peux déjà manipuler tous les objets Excel dont tu as besoin dans l'application dans laquelle tu te trouves déjà !

Je gage que tu ne te doutais sans doute pas que tu créais un 2e Excel dans ton code !

Je conseillerais donc, de choisir une voie différente, celle que j'indiquais au début de ce post, qui permettra de supprimer le plus gros de ton code, inutile.

Cordialement.

oui j en suis conscient que je n' y connais rien

Mets ton fichier qu'on puisse voir plus concrètement.

J'ai modifie un peu mon code

Il marche très bien et c'est surement pas académique

Pour rappel je dois créer des bons de commandes vierges, seul le N° de bon est crée. Le bon est enregistré dans un fichier dont le nom est

N° de bon - 18 - initiale du demandeur de bon

il est possible de demander différents bons en même temps

ma macro marche bien (pour l instant). les fichiers portant les N sont crées.

dans ma macro je mets bonjour en A1 du nouveau bon ok fonctionne

Je n arrive pas a copier la feuille "feuille vierge à la place de BONJOUR

.Private Sub CommandButton1_Click()

Dim j As Integer

Dim i As Integer

j = Me.ComboBoxNBREBON.Value ' prend la valeur du nombre de bons a créer'

Dim P As String 'permettra d'enregistrer le nom du fichier'

Sheets("ADZA").Range("F3") = Label5.Caption 'Mettre l'année dans F3

Do While i < j 'boucle création de bons en fonction du nombre'

Sheets("ADZA").Range("F2") = Sheets("ADZA").Range("F2").Value + 1 'incrémente le n° de bon'

'remplssage de J2 nom complet du bon n°-18-initiale du demandeur de bons'

Worksheets("FEUILLEVIERGE").Range("J2") = Sheets("ADZA").Range("F2").Value & "-" & Sheets("ADZA").Range("F3").Value & "-" & Sheets("ADZA").Range("F4").Value

Dim App As New Excel.Application

Dim Wbk As Excel.Workbook

Set Wbk = App.Workbooks.Add 'Création d'un fichier nouveau'

With Wbk.Sheets("feuil1") 'dans la feuille 1 du nouveau fichier en A1 ecrire BONJOUR'

.Range("A1") = "BONJOUR"

End With

'Donner un nom au nouveau fichier avec variable P sous forme n°-18-initiales '

P = Sheets("ADZA").Range("F2").Value & "-" & Sheets("ADZA").Range("F3").Value & "-" & Sheets("ADZA").Range("F4").Value

'Enregistrer le fichier dans BON 1000 avec nom valeur de P sous le format XLSX'

Wbk.SaveAs Filename:="C:\Users\nono\Desktop\BON1000\" & P & ".xlsx"

Wbk.Close ' Ferme WBK'

Set Wbk = Nothing 'efface la valeur'

Set App = Nothing 'efface la valeur'

Worksheets("FEUILLEVIERGE").Range("J2").Clear 'nettoyage de J2'

i = i + 1 'incrémente de 1

Loop

Unload Me 'ferme le userform

End Sub

Si ton objectif est de te faire plaisir avec tes gadgets, je te laisse poursuivre...

tres gentil merci beaucoup j apprécie votre aide

je reste toujours coince n'arrivant pas remplacer "aujourd'hui" par la copie de la feuille nommée 'FEUILLE VIERGE'

PS Je pense que le but d'un forum est d'aidé les autres

PS Je pense que le but d'un forum est d'aidé les autres

Et pour cela tu fournis un fichier représentatif de la question, qui permette de la cerner dans son intégralité et d'y répondre. A défaut c'est qu'en réalité tu n'attends aucune réponse...

Ben si. je n arrive pas à remplacer "aujourd'hui " par la copier de " FEUILLE VIERGE"

Ben si. je n arrive pas à remplacer "aujourd'hui " par la copier de " FEUILLE VIERGE"

With Wbk.Sheets("feuil1") 'dans la feuille 1 du nouveau fichier en A1 ecrire BONJOUR'

.Range("A1") = "BONJOUR"

End With

Tu es un petit plaisantin...

With Wbk.Sheets("feuil1") 'dans la feuille 1 du nouveau fichier en A1 ecrire BONJOUR'
.Range("A1") = "BONJOUR"
End With

si quelqu'un d autre peut m aider à remplacer le code .Range("A1")= "BONJOUR" par la copie de la plage de cellule ("A1:K41") de la feuille "FEUILLEVIERGE" du fichier "validation"

Merci

La copie n'est pas la bonne méthode.

Je ne sais pas. Je débute comment faire alors

Tu débutes bien mal ! Relis !

PS Je pense que le but d'un forum est d'aidé les autres

Bonjour,

Pour être aidé, il faut y mettre du sien... Tu aurais tord d'être têtu plutôt que de faire confiance à la patience et l'expertise de MFerrand (plus de 17000 messages, ça ne s'improvise pas...).

Saches qu'ici chacun prend du temps pour aider les autres, sans attendre aucun retour. Mais pour nous, ça ne change rien que ton problème soit résolu ou pas, il n'y a que toi qui sera perdant en ne donnant pas les éléments nécessaires à sa résolution.

Ajouter un fichier, c'est pas seulement pour faire beau. Tu ne montres pas une photo de ta voiture à ton garagiste pour qu'il te dise où est la panne...

voilà je vous laisse mon fichier. dans le user form. click sur validation je voudrai copier "feuille vierge" et la mettre dans un fichier dont le nom est donner dans le même événement

3validation.xlsm (194.59 Ko)

Bonsoir,

Tu es vraiment adepte de l'art de la complication. La question est pourtant simple. tu produis des bon de commande sous forme de fichier en déterminant automatiquement numéro du bon, nom et chemin d'enregistrement du fichier.

Disposant d'une feuille modèle de bon de commande, (et ne contenant rien d'autre) :

copie de la feuille dans un nouveau classeur, insertion du numéro, enregistrement du classeur et fermeture, est une opération élémentaire qui n'offre pas de difficulté à être utilisée en boucle.

Et le code tient en peu de lignes.

Le compliqué va être de revoir tout l'environnement pour en ramener les différents composants à des éléments simples et fonctionnels. Mais c'est salutaire pour l'efficacité future.

Cordialement.

Rechercher des sujets similaires à "probleme creant nouveau fichier deux"