Code VBA enregistrer

Signaler
Messages postés
33
Date d'inscription
jeudi 5 avril 2018
Statut
Membre
Dernière intervention
9 février 2020
-
yg_be
Messages postés
9681
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
-
Bonjour et merci d'avance pour votre temps,

j'ai un fichier Excel que je voudrais utiliser au boulot avec des collègues.
C'est un fichier avec un Userform pour pouvoir passer des commandes
.
Dans l'userform on a des TextBox et Combobox, dont deux ComboBox qui soit encodent ce qui est dans le menu déroulant soit si c'est un article encore inconnu l'ajoute à la base de bonnées qui est sur la Feuil2.
Une fois tout les articles entrés, on ferme l'userform et on" enregistre sous " pour pouvoir lui donner un nom et le retrouver plus tard.
Ensuite on Clic sur le bouton envoi et celui-ci permet d'envoyer par mail la commande à la secrétaire qui gère les commandes.

Mon problème c'est que lorsque j'enregistre le fichier sous un autre nom, mon fichier de base lui n'enregistre pas les modification dans la base de donnée.

Private Sub CommandButton1_Click() 'bouton valider
Call Enreg 'active le code Enreg du Modul1
Unload Me 'Ferme l'Userform
UserForm1.Show 'Ouvre l'Userform
End Sub

Private Sub CommandButton2_Click() 'bouton quitter
Call Enreg
Unload Me
End Sub

Sub Enreg()
Dim dernligne As Long
With Worksheets("Feuil1")
derligne = .Range("A1048576").End(xlUp).Row + 1 'dit de descendre en fin de feuille, de remonter sur la dernière remplie et de descendre de 1
.Range("A" & derligne).Value = ComboBox1.Text 'complète la colonne A avec les données du comboBox
.Range("B" & derligne).Value = ComboBox2.Text
.Range("C" & derligne).Value = TextBox1.Text
.Range("D" & derligne).Value = ComboBox3.Text
If Recherche("Descriptions", ComboBox3.Text) = 0 Then 'recherche: si Decriptions n'existe pas=0
Call Insertion_cellule_Plage_Nom("Descriptions", ComboBox3.Text) 'insertion cellule dans plage Decriptions et ecriture nouvelle Decriptions
End If
.Range("E" & derligne).Value = TextBox2.Text
.Range("F" & derligne).Value = TextBox3.Text
.Range("H" & derligne).Value = ComboBox4.Text
If Recherche("Fournisseurs", ComboBox4.Text) = 0 Then 'recherche: si Fournisseurs n'existe pas=0
Call Insertion_cellule_Plage_Nom("Fournisseurs", ComboBox4.Text) 'insertion cellule dans plage Fournisseurs et ecriture nouveau Fournisseurs
End If
.Range("I" & derligne).Value = TextBox4.Text
End With
Call RAZ_UF
End Sub

Sub RAZ_UF() 'vide l'userform
ComboBox1 = ""
ComboBox2 = ""
TextBox1 = ""
ComboBox3 = ""
TextBox2 = ""
TextBox3 = ""
ComboBox4 = ""
TextBox4 = ""
End Sub

Private Sub userform_initialize()
TextBox1.Value = Format(Now, "dd-mm-yyyy") 'mets la date dans le TextBox1
'cré une liste déroulante dans les ComboBox 1 et 3
Me.ComboBox1.List = Array("Bus", "Camion", "Espace Vert", "Festivitées", "Mécanique", "Menuiserie", "Peinture", "Signalisation", "Travaux", "Voirie")
Me.ComboBox2.List = Array("Alain", "Anthony", "Benoit", "Bernard", "Bibi", "DD", "Eddy", "Eric", "Fernand", "Fred B", "Fred M", "Gaëtan", "Gary", "Gilles", "Hasane", "Jean-Luc K", "Jean-Luc S", "Jean-Marc G", "Jean-Marc M", "Julien", "Kevin", "Louis", "Luc", "Michel", "Nebhi", "Nicolas", "Olivier", "Pascal", "Patrick", "Raphaël", "Ronald", "Silvio", "Thibaut", "Vincent H", "Vincent T")
End Sub



Private Sub UserForm_Click()

End Sub
Sub envoiClasseur2()
Dim Fichier As Variant

Fichier = Application.GetOpenFilename("Tous les fichiers(*.*),*.*")

MsgBox Fichier 'cré un mail et envoi le mail

Dim MaMessagerie As Object
Dim MonMessage As Object
Set MaMessagerie = CreateObject("Outlook.application")
Set MonMessage = MaMessagerie.Createitem(0)

MonMessage.to = "xxxxxxx@abcd.be"
MonMessage.CC = "xxxxxxx@abcd.be"
'MonMessage.CC = "yyyyyy@abcd.be"
'MonMessage.CC = "yyyyyy@abcd.be"
'MonMessage.CCI = "yyyyyy@abcd.be"'

MonMessage.attachments.Add Fichier


MonMessage = "Bon de commande"

contenu = "Bonjour,"
contenu = contenu & Chr(10) & Chr(13)
contenu = contenu & "Veuillez trouver en pièce jointe le bon de commande" & Chr(10) & Chr(13)
contenu = contenu & "Cordialement Olivier" & Chr(10) & Chr(13)
MonMessage.body = contenu

MonMessage.Send

Set MaMessagerie = Nothing

MsgBox "Votre demande a été envoyé"
End Sub

Sub Insertion_cellule_Plage_Nom(Plage, Txt) 'insertion cellule dans une plage nommee
With Range(Plage)
With .Cells(.Rows.Count, 1)
.Insert
End With
.Cells(.Rows.Count - 1, 1).Value = Txt
End With
End Sub

'recherche d'un texte dans une plage nommee
Function Recherche(Plage, Txt)
Recherche = Application.CountIf(Range(Plage), Txt)
End Function

Y aurait-il un code pour pouvoir enregistrer les modifications de la Feuil2.
Merci pour l'aide
Bonne journée

5 réponses

Messages postés
27635
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 février 2020
2 124
Oliviercroon
Messages postés
33
Date d'inscription
jeudi 5 avril 2018
Statut
Membre
Dernière intervention
9 février 2020

Merci pour les infos, je vais tester.
Messages postés
33
Date d'inscription
jeudi 5 avril 2018
Statut
Membre
Dernière intervention
9 février 2020

Bonjour, je ne parviens pas à sauvegarder uniquement les nouvelles données qui ont été misent dans la Feuil2. Et à garder le tableau de la feuil1 vierge pour une commande suivant.

PS: je comprend vite lorsqu'on explique longtemps :)
yg_be
Messages postés
9681
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
532
bonjour, nous ne comprenons que ce qui nous est expliqué.
tu n'as pas expliqué ce que tu voulais obtenir comme résultat. merci d'être concret et précis.
veux-tu créer un nouveau fichier avec une nouvelle feuille?
Messages postés
33
Date d'inscription
jeudi 5 avril 2018
Statut
Membre
Dernière intervention
9 février 2020

Bonjour ,

voila ce que je fais et ce que j'ai.

1 j'ouvre mon fichier commande
2 J'ouvre mon Userform
3 Je compète l'Userform (si des article inconnu sont encoder, il les ajoute à ma base de donner en Feuil2
4 Une fois tout encoder je quitte l'Userform et mon tableau en Feuil1 est complèter
5 Je sauve sous une référence pour pouvoir retrouver ma commande (exemple commande1)
6 J'envoi la commande

Ce que je désir, c'est que ce qui est encoder en Feuil2 soit enregister dans le Fichier d'origine (commande) pour que la fois d'après si je doit en recommander je ne dois plus rechercher l'article sur le net ou ailleurs.
Pour le moment les nouveaux articles ne sont enregistrer que dans le fichier commande1

Merci pour votre temps et votre aide

yg_be
Messages postés
9681
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
532
je propose de faire ainsi
- quand le code de la userform ajoute des données dans Feuil2, le code sauve le fichier
- quand le fichier commande s'ouvre, le contenu de la feuille Feuil1 sera automatiquement remplacé par le contenu d'une feuille modèle
Messages postés
33
Date d'inscription
jeudi 5 avril 2018
Statut
Membre
Dernière intervention
9 février 2020

Oui c'est ce qu'il faudrait mais je ne connais pas le code pour que cela s'enregistre automatiquement
https://www.cjoint.com/c/JBiuQ7Neenx
--le lien pour voir mon fichier

Si tu veux aller vite, marche seul mais si tu veux aller loin, marchons ensemble.
yg_be
Messages postés
9681
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
532
pour la première partie, je pense qu'il suffit d'ajouter
thisworkbook.save
à la fin de
Sub Insertion_cellule_Plage_Nom()
.
Messages postés
33
Date d'inscription
jeudi 5 avril 2018
Statut
Membre
Dernière intervention
9 février 2020

Bonjour, je ne comprend pas comment l'ajouter au code
yg_be
Messages postés
9681
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 février 2020
532
c'aurait été plus simple si tu avais utilisé les balises de code pour publier ton code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
peut-être devrais-tu expliquer ton niveau de connaissance en programmation VBA et ta compréhension du code que tu utilises, cela nous aiderait à comprendre le genre d'aide que tu cherches.
et aussi comprendre ce que cela implique de marcher avec toi.