Copier feuille d'un classeur vers un autre avec un userform
Bonjour
Je souhaite copier la feuille TABLEMAT du classeur "105" sur la feuille TABLEMAT du calsseur "Rapport". Le problème c'est que je souhaite copier cette feuille selon une condition donnée par un userform.
Je m'explique: dans mon classeur "Rapport" j'ai un bouton "INFO" qui appelle un userform. Ce userform sert à remplir l'en-tête de ma feuille "RAPPORT". Le numéro de job que j'inscris dans le userform correspond au numéro du classeur à partir du quel je veux copier la feuille "TABLEMAT".
Dans les fichiers test que j'ai joint au message, le numéro de job est le 105 mais en réalité j'ai plusieurs fichiers identiques à celui du 105. Est-ce que c'est possible selon le numéro que j'inscris dans mon userform qu'automatiquement il puisse aller chercher cette feuille dans le bon classeur.
Bonjour Steeeve34
Voici le code pour ton bouton "Valider", la partie qui t'intéresse est en bas de la sub
Private Sub CommandButton1_Click()
Dim sPath As String, sFic As String
Dim ShtS As Worksheet
' On teste la saisie du nom ... If Me.txtNom.Text = "" Then
If Me.txtNoJob.Text = "" Then
MsgBox "Vous devez entrer un No.Job."
Me.txtNoJob.SetFocus
Exit Sub
End If
GoTo Suite
' On teste la saisie du prénom ... If Me.txtPrenom.Text = "" Then
If Me.txtClient.Text = "" Then
MsgBox "Vous devez entrer un nom de client."
Me.txtClient.SetFocus
Exit Sub
End If
If Me.txtModele.Text = "" Then
MsgBox "Vous devez entrer un numéro de modèle."
Me.txtModele.SetFocus
Exit Sub
End If
If Me.txtPrepare.Text = "" Then
MsgBox "Vous devez entrer votre nom."
Me.txtPrepare.SetFocus
Exit Sub
End If
If Me.txtDate.Text = "" Then
MsgBox "Vous devez entrer la date."
Me.txtDate.SetFocus
Exit Sub
End If
Sheets("RAPPORT").Range("D3").Value = Me.txtNoJob.Text
Sheets("RAPPORT").Range("D4").Value = Me.txtClient.Text
Sheets("RAPPORT").Range("D5").Value = Me.txtModele.Text
Sheets("RAPPORT").Range("D6").Value = Me.txtPrepare.Text
Sheets("RAPPORT").Range("I6").Value = Me.txtDate.Text
Suite:
' Définir le chemin d'accès au fichier ainsi que son nom
sPath = ThisWorkbook.Path & "\"
sFic = Me.txtNoJob & ".xlsx"
' Copier la feuille du classeur correspondant
Workbooks.Open sPath & sFic
ActiveWorkbook.Sheets("TABLEMAT").Cells.Copy
ThisWorkbook.Sheets("TABLEMAT").Paste
Application.CutCopyMode = False
ActiveWorkbook.Close
' Fermer l'userform
Unload Me
End SubA+
J'ai faite un test avec la macro que tu as modifié et ça fonctionnais jusqu'à ce que je supprime les cellules copiées dans mon classeur RAPPORT. Depuis que j'ai supprimées ces cellules pour faire un autre test, il m'apparait un message d'erreur disant que je dois copiées mes cellules en A1. J'ai essayé de résoudre le problème mais sans succès. Aurais-tu une idée de ce qui pourrais causer ce problème ?
Re,
Essaye de changer
ActiveWorkbook.Sheets("TABLEMAT").Cells.Copy
ThisWorkbook.Sheets("TABLEMAT").Pastepar
ActiveWorkbook.Sheets("TABLEMAT").Cells.Copy Destination:=ThisWorkbook.Sheets("TABLEMAT").range("A1")A+
La dernière modification que tu as apporté à la macro marche très bien. Malheureusement j'ai un autre problème. J'ai essayé d'intégrer cette macro dans mon vrai fichier et ça ne fonctionne pas. Il ne trouve pas le classeur excel qu'il doit ouvrir (exemple 105.xlsx). Dans la macro que tu as faites, le classeur 105.xlsx avais le même chemin d'accès que mon classeur RAPPORT mais pour mon vrai fichier ce n'est pas le cas. Mon classeur à ouvrir se trouve sur outlook, dans les dossiers publics. Voici le chemin que j'ai trouvé et que j'ai inséré dans ma macro:
sPath = "Outlook\\Dossiers publics - spepin@xxxx.com\Tous les dossiers publics\Job (en Cours) Dossiers"
sFic = Me.txtNoJob & "*" & ".xlsx"