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 !
Bonjour,
J'ai créé un UserForm avec des textbox pour modifier différents classeurs. Au lancement de mon UserForm, j'ai un bouton parcourir où se trouvent tous mes classeurs de format identique. Mon problème est que lorsque je rempli les textbox ça renseigne les cellules du classeur où se trouve mon UserForm. Comment je peux faire pour que mes saisies s'affichent dans le classeur que j'ai choisi par le biais de mon bouton parcourir.
Merci de votre aide.
Bonjour Arpette et bienvenue 🙂,
Je ne suis pas sûr que ça réponde à ta question, mais... Cells(1, 1) = TextBox1 va remplir la cellule de la feuille active du classeur actif. Sheets("Feuil1").Cells(1, 1) = TextBox1 va remplir la cellule de la feuille "Feuil1" du classeur actif. Workbooks("Test.xls").Sheets("Feuil1").Cells(1, 1) = TextBox1 va remplir la cellule de la feuille "Feuil1" du classeur "Test.xls".
Bon dimanche 😎
Bonjour Arpette et bienvenue 🙂,
Je ne suis pas sûr que ça réponde à ta question, mais... Cells(1, 1) = TextBox1 va remplir la cellule de la feuille active du classeur actif. Sheets("Feuil1").Cells(1, 1) = TextBox1 va remplir la cellule de la feuille "Feuil1" du classeur actif. Workbooks("Test.xls").Sheets("Feuil1").Cells(1, 1) = TextBox1 va remplir la cellule de la feuille "Feuil1" du classeur "Test.xls".
Bon dimanche 😎
Bonjour JNP et merci de m'avoir répondu.
Tout d'abord désolé de reprendre la discution si tardivement, j'étais en déplacement.
Comme tu le soulignes, ça ne répond pas à ma question qui n'est pas facile à formuler, mai voici:
Mon UserForm est dans un classeur Saisie.xls. Quand je l'ouvre mon USF s'affiche en plein écran (bien). Quand je renseignes me Textbox elles écrivent dans la feuille 1 de mon classeur Saisie.xls, mais c'est ça que je ne veux pas. J'ai un bouton parcourir qui ouvre l'explorateur et qui m'envoi vers un répertoire : "C:\Documents and Settings\JFL CONTROLE\Bureau\Trames\"
Ici j'ouvre un de mes classeurs et je voudrais que mes textbox de mon USF saisie renseignent ce classeur. A noter que tous mes classeurs sont de format
identiques. Merci de ton aide
Re 🙂,
A priori, je répondais bien à ta question, ou alors, il faut que tu éclaircisses encore ta question 😛...
Tu dis que tu ouvres un classeur, admettons Toto.xls, Workbooks("Toto.xls").Sheets("Feuil1").Cells(1, 1) = TextBox1 doit permettre de faire ce que tu souhaites.
Ton problème est peut-être de connaître Toto.xls...
Ta procédure pour ouvrir le fichier doit avoir stocké ton chemin = "C:\Documents and Settings\JFL CONTROLE\Bureau\Trames\Toto.xls", tu peux le récupérer par exemple en stockant dans un tableau
Re 🙂,
A priori, je répondais bien à ta question, ou alors, il faut que tu éclaircisses encore ta question 😛...
Tu dis que tu ouvres un classeur, admettons Toto.xls, Workbooks("Toto.xls").Sheets("Feuil1").Cells(1, 1) = TextBox1 doit permettre de faire ce que tu souhaites.
Ton problème est peut-être de connaître Toto.xls...
Ta procédure pour ouvrir le fichier doit avoir stocké ton chemin = "C:\Documents and Settings\JFL CONTROLE\Bureau\Trames\Toto.xls", tu peux le récupérer par exemple en stockant dans un tableau
Bonjour JNP, ça ne marche pas, voici ce que j'ai écrit
******************************************
ThisWorkbook
Private Sub Workbook_Open()
Excel.Application.Visible = False
FSaisie.Show
End Sub
******************************************
Option Explicit
Private Declare Function GetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize()
Dim hWnd As Long
Dim Feuille As String
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
"X", "D") & "Frame", Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
With Me
.StartUpPosition = 3
.Width = Application.Width
.Height = Application.Height
.Left = 0
.Top = 0
End With
End Sub
Private Sub UserForm_Layout()
'Empêche le déplacement du UserForm avec la souris
Me.Top = 0
Me.Left = 0
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Cancel = True
End Sub
Private Sub CommandButton2_Click()
Dim Répertoire As String 'C'est ici que je veux ouvrir mon classeur'
Répertoire = "C:\Documents and Settings\JFL CONTROLE\Bureau\Trames\"
Shell "C:\Windows\EXPLORER.EXE " & Répertoire, vbMaximizedFocus
End Sub
Private Sub CommandButton1_Click()
Unload Me
Application.Quit
End Sub
qui te renvoie tout ce qui faut, mais qui as le tort de ne pouvoir pointer dans un dossier spécifique (en tout cas je ne sais pas faire). La méthode Shell à priori ne te renvoie pas le nom de fichier 😱...
La méthode FileDialog devrait elle convenir, je te donne l'exemple fourni par l'aide
Code:
Sub Main()
'Declare a variable as a FileDialog object
Dim fd As FileDialog
'Create a FileDialog object as a [B]File Picker[/B] dialog box.
Set fd = Application.FileDialog(msoFileDialogFilePicker)
'Declare a variable to contain the path
'of each selected item. Even though the path is a[B]String[/B],
'the variable must be a Variant because For Each...Next
'routines only work with Variants and Objects.
Dim vrtSelectedItem As Variant
'Use a With...End With block to reference the FileDialog object.
With fd
'Set the initial path to the C:\ drive.
.[B]InitialFileName[/B] = "C:\"
'Use the Show method to display the [B]File Picker[/B] dialog box and return the user's action.
'If the user presses the button...
If .Show = -1 Then
'Step through each string in the FileDialogSelectedItems collection.
For Each vrtSelectedItem In .SelectedItems
'vrtSelectedItem is a[B]String[/B] that contains the path of each selected item.
'You can use any file I/O functions that you want to work with this path.
'This example displays the path in a message box.
MsgBox "Selected item's path: " & vrtSelectedItem
Next vrtSelectedItem
'If the user presses Cancel...
Else
End If
End With
'Set the object variable to Nothing.
Set fd = Nothing
End Sub
Là, tu peux, et définir le dossier de recherche, et récupérer le nom du fichier 😉.
Pas belle la vie 😛 ?
Bon dimanche 😎
Effectivement, je pensais que tu passais par Chemin = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls")qui te renvoie tout ce qui faut, mais qui as le tort de ne pouvoir pointer dans un dossier spécifique (en tout cas je ne sais pas faire)
Private Sub CommandButton2_Click()
Dim fileToOpen As Variant, wbCible As Workbook, nCible As String
[B][COLOR="Blue"]ChDir ("C:\Documents and Settings\JFL CONTROLE\Bureau\Trames\")[/COLOR][/B]
fileToOpen = Application.GetOpenFilename("Feuille de calcul (*.xls), *.xls")
If fileToOpen <> False Then Workbooks.Open (fileToOpen)
Set wbCible = ActiveWorkbook
nCible = ActiveWorkbook.Name 'ça peut servir
With wbCible
TextBox1 = .Sheets(1).Range("A6") 'à adapter
End With
End Sub
Private Sub CommandButton2_Click()
Dim fileToOpen As Variant, wbCible As Workbook, nCible As String
[B][COLOR="Blue"]ChDir ("C:\Documents and Settings\JFL CONTROLE\Bureau\Trames\")[/COLOR][/B]
fileToOpen = Application.GetOpenFilename("Feuille de calcul (*.xls), *.xls")
If fileToOpen <> False Then Workbooks.Open (fileToOpen)
Set wbCible = ActiveWorkbook
nCible = ActiveWorkbook.Name 'ça peut servir
With wbCible
TextBox1 = .Sheets(1).Range("A6") 'à adapter
End With
End Sub
Bonjour kjn, j'ai essayé, ça m'envoie bien vers mon dossier, je choisi mon classeur, mais quand je renseigne mes textbox, ça rempli les cellules de la feuille 1 Saisie alors que je veux que ça renseigne les cellules de mon dernier classeur ouvert.
Merci à tous les deux pour votre aide
Bonsoir,
Vois pas comment c'est possible avec ma macro...
Néanmoins il est vrai qu'elle fonctionne à l'envers par rapport à ta demande initiale (transfert des données de la feuille vers le formulaire)
Donc si on remet dans le bon sens
Code:
Private Sub CommandButton2_Click()
Dim fileToOpen As Variant, wbCible As Workbook, nCible As String
ChDir ("C:\Documents and Settings\JFL CONTROLE\Bureau\Trames\")
fileToOpen = Application.GetOpenFilename("Feuille de calcul (*.xls), *.xls")
If fileToOpen <> False Then Workbooks.Open (fileToOpen)
Set wbCible = ActiveWorkbook
nCible = ActiveWorkbook.Name 'ça peut servir
[COLOR="Blue"]With wbCible.Sheets(1)[/COLOR] 'à adapter
[COLOR="Blue"].Range("A6") = TextBox1[/COLOR] 'à adapter
End With
End Sub
Bonsoir,
Vois pas comment c'est possible avec ma macro...
Néanmoins il est vrai qu'elle fonctionne à l'envers par rapport à ta demande initiale (transfert des données de la feuille vers le formulaire)
Donc si on remet dans le bon sens
Code:
Private Sub CommandButton2_Click()
Dim fileToOpen As Variant, wbCible As Workbook, nCible As String
ChDir ("C:\Documents and Settings\JFL CONTROLE\Bureau\Trames\")
fileToOpen = Application.GetOpenFilename("Feuille de calcul (*.xls), *.xls")
If fileToOpen <> False Then Workbooks.Open (fileToOpen)
Set wbCible = ActiveWorkbook
nCible = ActiveWorkbook.Name 'ça peut servir
[COLOR="Blue"]With wbCible.Sheets(1)[/COLOR] 'à adapter
[COLOR="Blue"].Range("A6") = TextBox1[/COLOR] 'à adapter
End With
End Sub
Bonjour à tous, un ami as trouvé la solution voici le code :
Option Explicit
Const LeTitre = "Contrôle JFL"
Public LeClasseur As Excel.Workbook
Private Declare Function GetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLongA Lib "User32" _
(ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function FindWindowA Lib "User32" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub UserForm_Initialize()
Dim hWnd As Long
Dim Feuille As String
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", _
"X", "D") & "Frame", Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
With Me
.StartUpPosition = 3
.Width = Application.Width
.Height = Application.Height
.Left = 0
.Top = 0
End With
End Sub
'Private Sub UserForm_Layout()
'Empêche le déplacement du UserForm avec la souris
'Me.Top = 0
'Me.Left = 0
'End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = vbFormControlMenu Then Cancel = True
End Sub
Private Sub CommandButton2_Click()
Dim Répertoire As String
Dim filter As String
Dim FilterIndex As Integer
Dim Nomfichier As String
Répertoire = "C:\Documents and Settings\JFL CONTROLE\Bureau\Trames\"
' Select Start Drive & Path
ChDrive ("C")
ChDir ("C:\Documents and Settings\JFL CONTROLE\Bureau\Trames\")
With Application
' Set File Name to selected File
Nomfichier = .GetOpenFilename(filter, FilterIndex, LeTitre)
End With
'nom fichier contient chemin complet au fichier excel sélectionné
' Exit on Cancel
If Nomfichier = "" Or UCase(Trim(Nomfichier)) = "FAUX" Or UCase(Trim(Nomfichier)) = "FALSE" Then
MsgBox "Pas de fichier sélectionné", vbInformation
Exit Sub
Else
Set LeClasseur = Workbooks.Open(Nomfichier)
- 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