Bonsoir à tous,
Voilà mon problème : j'ai 2 fichiers invvueint et stock_mtt. Le premier fichier est modifié tous les jours et le nombre de lignes est variable. Je dois donc mettre à jour mon 2 ieme fichier avec les nouvelles données. Le but du code est de sélectionner dans le fichier invvueint les lignes à partir de la 3ieme et jusqu'à la dernière ligne de stock (dans mon exemple la ligne 142) et de copier la selection dans le fichier stock_mtt à partir de la ligne 15. Il faut aussi savoir que le fichier stock_mtt a parfois plus de lignes que le fichier invvueint. Il faudra donc ,avant de copier les données, effacer les anciennes données sur le fichier stock_mtt.
Je vous mets les 2 fichiers d'exemple en pièces jointes, et je vous donne le code que j'ai déjà fait.
Il n'est peut-être pas adapté à mon problème, mais je n'ai pas trouvé d'autre solution.
Private Sub CommandButton1_Click()
'Message attention le stock va être effacé : voulez-vous continuer
Dim Msg, Style, Title, Response, MyString
Msg = "Souhaitez-vous continuer? Votre ancien stock sera effacé"
Style = vbYesNo + vbCritical + vbDefaultButton2
Title = "Attention"
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then
MyString = "Oui"
Rows("15:65536").Select
Selection.ClearContents
'ouvre le listing inventaire
On Error Resume Next
Workbooks.Open "C:\Documents and Settings\mtt\Bureau\invvueint.xls"
If Err <> 0 Then
MsgBox "Erreur! Le fichier inventaire n'existe pas"
Exit Sub
End If
'Sélection et copie les lignes du nouveau stock
Dim NumDernLigne As Long
NumDernLigne = ActiveSheet.Range("A65536").End(xlUp).Row
Selection.Copy
'active le classeur stock et copie le stock
Workbooks("stock_mtt.xls").Activate
Range("A15").Select
Selection.Paste
Workbooks("invvueint.xls").Save
Workbooks("invvueint.xls").Close
Range("C12").Value = Date
'Impression facutative du nouvel inventaire
Dim Msg1, Style1, Title1, Response1, MyString1
Msg1 = "Souhaitez-vous imprimer le nouveau stock"
Style1 = vbYesNo + vbDefaultButton2
Title1 = "Impression"
Response1 = MsgBox(Msg1, Style1, Title1)
If Response1 = vbYes Then
MyString1 = "Oui"
Call plocal
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Else
MyString1 = "Non"
End If
Else
MyString = "Non"
End If
End Sub
Merci d'avance pour votre aide.
Vovoduplo
Voilà mon problème : j'ai 2 fichiers invvueint et stock_mtt. Le premier fichier est modifié tous les jours et le nombre de lignes est variable. Je dois donc mettre à jour mon 2 ieme fichier avec les nouvelles données. Le but du code est de sélectionner dans le fichier invvueint les lignes à partir de la 3ieme et jusqu'à la dernière ligne de stock (dans mon exemple la ligne 142) et de copier la selection dans le fichier stock_mtt à partir de la ligne 15. Il faut aussi savoir que le fichier stock_mtt a parfois plus de lignes que le fichier invvueint. Il faudra donc ,avant de copier les données, effacer les anciennes données sur le fichier stock_mtt.
Je vous mets les 2 fichiers d'exemple en pièces jointes, et je vous donne le code que j'ai déjà fait.
Il n'est peut-être pas adapté à mon problème, mais je n'ai pas trouvé d'autre solution.
Private Sub CommandButton1_Click()
'Message attention le stock va être effacé : voulez-vous continuer
Dim Msg, Style, Title, Response, MyString
Msg = "Souhaitez-vous continuer? Votre ancien stock sera effacé"
Style = vbYesNo + vbCritical + vbDefaultButton2
Title = "Attention"
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then
MyString = "Oui"
Rows("15:65536").Select
Selection.ClearContents
'ouvre le listing inventaire
On Error Resume Next
Workbooks.Open "C:\Documents and Settings\mtt\Bureau\invvueint.xls"
If Err <> 0 Then
MsgBox "Erreur! Le fichier inventaire n'existe pas"
Exit Sub
End If
'Sélection et copie les lignes du nouveau stock
Dim NumDernLigne As Long
NumDernLigne = ActiveSheet.Range("A65536").End(xlUp).Row
Selection.Copy
'active le classeur stock et copie le stock
Workbooks("stock_mtt.xls").Activate
Range("A15").Select
Selection.Paste
Workbooks("invvueint.xls").Save
Workbooks("invvueint.xls").Close
Range("C12").Value = Date
'Impression facutative du nouvel inventaire
Dim Msg1, Style1, Title1, Response1, MyString1
Msg1 = "Souhaitez-vous imprimer le nouveau stock"
Style1 = vbYesNo + vbDefaultButton2
Title1 = "Impression"
Response1 = MsgBox(Msg1, Style1, Title1)
If Response1 = vbYes Then
MyString1 = "Oui"
Call plocal
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Else
MyString1 = "Non"
End If
Else
MyString = "Non"
End If
End Sub
Merci d'avance pour votre aide.
Vovoduplo