XL 2016 Demande aide sur VBA

Mike March

XLDnaute Nouveau
Bonjour les ami(e)s
J'ai un bug lorsque je lance mon userform dans cette partie du programme (bouton sauvegarder le rapport)
Je copie d'abord dans mon fichier source (données générales) et exporte les 14 lignes dont deux zones commentaires et date visite.
Là où cela bug est la partie sauvegarde.
Explication, je souhaite que mon feuille ''Rapport" et qu'elle soit ensuite enregistrée dans un classeur portant le nom du lieu + date visite.
VB:
Private Sub CommandButton1_Click()

Dim L As Integer
 Dim Chemin As String
 
 If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
     L = Sheets("Rapport").Range("a65536").End(xlUp).Row + 0 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide

     Range("A" & L).Value = ComboBox1
     Range("M" & L).Value = ComboBox2
     Range("B" & L).Value = TextBox1
     Range("C" & L).Value = TextBox2
     Range("D" & L).Value = TextBox3
     Range("E" & L).Value = TextBox4
     Range("F" & L).Value = TextBox5
     Range("G" & L).Value = TextBox6
     Range("H" & L).Value = TextBox7
     Range("I" & L).Value = TextBox8
     Range("J" & L).Value = TextBox9
     Range("K" & L).Value = TextBox10
     Range("L" & L).Value = TextBox11
     Range("M" & L).Value = TextBox12
     Range("N" & L).Value = TextBox13
     Range("O" & L).Value = TextBox14
      Range("P" & L).Value = TextBox15
 End If
 Application.ScreenUpdating = False
  Chemin = "C:\MonRépertoire\"
 
  Sheets("Rapport").Copy 'copie de la feuille

  With ActiveWorkbook
    .SaveAs Filename:=Chemin & ThisWorkbook.Sheets("Rapport").Range("A1") & " " & Format(Now, "yy-mm-dd hhmmss") ' ici ca plante
    .Close
  End With
  end Sub

Merci par avance
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Que vous dis le message d'erreur (n° erreur, description)?

Je viens de tester votre bout de code de sauvegarde (à partir de 'Chemin = ....'
Aucun problème à signaler. Joignez le fichier (anonymisé).

Cordialement
 

Mike March

XLDnaute Nouveau
1573745706242.png

voici lorsque je termine par le bouton enregistrer de mon USF.
Deuxième point bloquant, je souhaite que le nouveau fichier s'enregistre avec la valeur de la textbox 1
je poste le code entier de cet USF
VB:
Option Explicit

Dim Ws As Worksheet

Private Sub Enregistrer_Click()

End Sub

Private Sub commandbouton1click_Click()

End Sub

Private Sub Label16_Click()

End Sub

Private Sub Label4_Click()

End Sub

Private Sub TextBox7_Change()

End Sub

'Pour le formulaire

Private Sub UserForm_Initialize()

Dim J As Long
Dim I As Integer

ComboBox2.ColumnCount = 1 'Pour la liste déroulante Client
ComboBox2.List() = Array("toto1, toto2, toto3")

Set Ws = Sheets("Fichier Visite Client") 'Correspond au nom de votre onglet dans le fichier Excel

With Me.ComboBox1

    For J = 2 To Ws.Range("A" & Rows.Count).End(xlUp).Row
       .AddItem Ws.Range("A" & J)
    Next J

End With

For I = 1 To 15
     Me.Controls("TextBox" & I).Visible = True
Next I

End Sub
'Pour la liste déroulante Code client

Private Sub ComboBox1_Change()

Dim Ligne As Long
Dim I As Integer

If Me.ComboBox1.ListIndex = -1 Then Exit Sub

  Ligne = Me.ComboBox1.ListIndex + 2

  ComboBox2 = Ws.Cells(Ligne, "A")

  For I = 1 To 15
     Me.Controls("TextBox" & I) = Ws.Cells(Ligne, I + 1)
  Next I

End Sub
'Pour le bouton Nouveau contact

Private Sub CommandButton1_Click()

Dim L As Integer
Dim Chemin As String

If MsgBox("Confirmez-vous l'insertion de ce nouveau contact ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then
     L = Sheets("Rapport").Range("a65536").End(xlUp).Row + 0 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide

     Range("A" & L).Value = ComboBox1
     Range("M" & L).Value = ComboBox2
     Range("B" & L).Value = TextBox1
     Range("C" & L).Value = TextBox2
     Range("D" & L).Value = TextBox3
     Range("E" & L).Value = TextBox4
     Range("F" & L).Value = TextBox5
     Range("G" & L).Value = TextBox6
     Range("H" & L).Value = TextBox7
     Range("I" & L).Value = TextBox8
     Range("J" & L).Value = TextBox9
     Range("K" & L).Value = TextBox10
     Range("L" & L).Value = TextBox11
     Range("M" & L).Value = TextBox12
     Range("N" & L).Value = TextBox13
     Range("O" & L).Value = TextBox14
      Range("P" & L).Value = TextBox15
End If
Application.ScreenUpdating = False
  Chemin = "C:\Monrépertoire\"

  Sheets("Rapport").Copy

  With ActiveWorkbook
    ' -> a corriger par la valeur de la combobox1'.SaveAs Filename:=Chemin & ThisWorkbook.Sheets("Rapport").Range("A1") & " " & Format(Now, "yy-mm-dd hhmmss")
    .Close
  End With
End Sub

'Pour le bouton Quitter

Private Sub CommandButton2_Click()

   Unload Me

End Sub
Merci par avance
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Le message est explicite, sans doute que le fichier existe déjà dans le répertoire correspondant ou qu'une des partie de 'Chemin' n'existe pas sur le disque. A vous de voir.

Chez moi, comme je vous le disais ce matin le code d'enregistrement marche très bien, avec un répertoire existant

Bonne soirée
 

Mike March

XLDnaute Nouveau
Re,

Le message est explicite, sans doute que le fichier existe déjà dans le répertoire correspondant ou qu'une des partie de 'Chemin' n'existe pas sur le disque. A vous de voir.

Chez moi, comme je vous le disais ce matin le code d'enregistrement marche très bien, avec un répertoire existant

Bonne soirée
Bonsoir merci pour votre aide.
Je souhaite créer un fichier XlS d'après le nom du client visité ('selectionné par la combobox1). J'ai mis en commentaire la zone sauvegarde car je galère pour joindre le nom de la combobox en fichier client.xls (nom du client visité)
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Pourquoi xls, ce format est dépassé depuis excel 2007 ?

Fichier = Chemin & Combox1.Value & " " & Format(Now, "yy-mm-dd hhmmss")

si vous voulez vraiment du xls alors: ActiveWorkbook.SaveAs Filename:=Fichier, FileFormat:=xlExcel8

Bonne soirée.

[Edit] NomClient = Combobox1.Value à condition que Combobox.ListIndex>-1 (un choix a été fait), que le combobox n'ait qu'une colonne ou que la colonne affichée du combobox soit la même que sa propriété .BoundColumn
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 897
Membres
101 833
dernier inscrit
sandra25