Selection de cellules à copier dans un autre fichier

vovoduplo

XLDnaute Nouveau
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
 

Pièces jointes

  • stock.zip
    18.6 KB · Affichages: 33
  • stock.zip
    18.6 KB · Affichages: 35
  • stock.zip
    18.6 KB · Affichages: 33

kjin

XLDnaute Barbatruc
Re : Selection de cellules à copier dans un autre fichier

Voilà mon problème....

Bonjour,
Tu n'indiques pas vraiment où est le problème, mais bon, un bout de code à tester avec ton bouton du fichier stock_mtt :

Private Sub CommandButton1_Click()
Dim Quest As Integer, Derlign As Long

Application.ScreenUpdating = False
Quest = MsgBox("Souhaitez-vous continuer ? Votre ancien stock sera effacé !", _
vbYesNo + vbCritical)
If Quest = vbNo Then Exit Sub
If Quest = vbYes Then
Range("A15:G15" & Range("A65536").End(xlUp).Row).ClearContents
If Dir("C:\Documents and Settings\mtt\Bureau\invvueint.xls") = "" Then
MsgBox "Le fichier n'existe pas !", vbExclamation
Exit Sub
Else
Workbooks.Open ("C:\Documents and Settings\mtt\Bureau\invvueint.xls")
Derlign = Sheets(1).Range("G3").End(xlDown).Row
Sheets(1).Range("A3:G" & Derlign).Copy
Windows("stock_mtt.xls").Activate
Range("A15").PasteSpecial Paste:=xlAll, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Windows("invvueint.xls").Close
End If
End If
Application.ScreenUpdating = True
With Range("C12")
.Activate
.Value = Date
End With
End Sub

A+
kjin
 

Pièces jointes

  • stock_mtt.zip
    14.7 KB · Affichages: 28

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re : Selection de cellules à copier dans un autre fichier

Bonjour Kjin, vovoduplo, le forum

voila une macro à placer dans stock_mtt, il te faudra d'ailleurs modifier en nombre le format de la colonne B

Cordialement, A+
Code:
Sub Incorporer_Stock()
Dim Stock_Valeurs As Range
ThisWorkbook.Sheets(1).Range("A14:G65536").ClearContents
On Error GoTo Gere_Erreurs
Set Stock_Valeurs = Workbooks("invvueint.xls").Sheets(1).Range("A3:G" & Workbooks("invvueint.xls").Sheets(1).Range("A3").End(xlDown).Row)
On Error GoTo 0
ThisWorkbook.Sheets(1).Range("A14:G" & 13 + Stock_Valeurs.Rows.Count).Value = Stock_Valeurs.Value
Exit Sub
Gere_Erreurs:
MsgBox "Classeur invvueint.xls introuvable", vbOKOnly + vbInformation
End Sub
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re : Selection de cellules à copier dans un autre fichier

pour le fun, la même chose en deux lignes de code
Code:
ThisWorkbook.Sheets(1).Range("A14:G65536").ClearContents
ThisWorkbook.Sheets(1).Range("A14:G" & 13 + Workbooks("invvueint.xls").Sheets(1).Range("A3:G" & Workbooks("invvueint.xls").Sheets(1).Range("A3").End(xlDown).Row).Rows.Count).Value = Workbooks("invvueint.xls").Sheets(1).Range("A3:G" & Workbooks("invvueint.xls").Sheets(1).Range("A3").End(xlDown).Row).Value
 

vovoduplo

XLDnaute Nouveau
Re : Selection de cellules à copier dans un autre fichier

Merci à tous les 2,

La solution la plus raisonnable me semble être le 2ieme code de Yeahou. Je vais ajouter ces lignes à mon projet et je vous tiens au courant.

Si je peux abuser de votre savoir, comment faire pour ne pas effacer le stock sur le fichier stock_mtt et pouvoir ajouter sur la premiere ligne vide les données du listing invvueint.

En fait, j'ai parfois besoin d'ajouter un invvueint sur le fichier stock_mtt sans effacer le relevé existant.

Merci à tous
Vovoduplo
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re : Selection de cellules à copier dans un autre fichier

Bonjour

voici le code demandé qui ajoutera les données de intvueimp à la suite des données existantes.
Code:
ThisWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(1, 0).Range("A1:G" & Workbooks("invvueint.xls").Sheets(1).Range("A3:G" & Workbooks("invvueint.xls").Sheets(1).Range("A3").End(xlDown).Row).Rows.Count).Value = Workbooks("invvueint.xls").Sheets(1).Range("A3:G" & Workbooks("invvueint.xls").Sheets(1).Range("A3").End(xlDown).Row).Value

pour ne pas effacer le stock, il suffit de ne pas lancer
Code:
ThisWorkbook.Sheets(1).Range("A14:G65536").ClearContents

Cordialement, A+
 

vovoduplo

XLDnaute Nouveau
Re : Selection de cellules à copier dans un autre fichier

Bonjour Yeahou et le forum,

Les 2 formules fonctionnent très bien dans les exemples que j'ai mis sur le forum. C'est exactement le résultat recherché.

En intégrant cela à mon classeur stock réel, cela ne fonctionne plus correctement. J'ai oublié de vous donné une info de taille... Mon classeur stock_mtt à plusieurs dizaines de feuilles et la mise à jour des stocks ne se fait pas toujours sur la feuille 1. Seul le classeur invvueint.xls ne possède qu,une feuille. j'ai déjà intégré la selection de la feuille dans le classeur stock. mais avec les formules de Yeahou je me retrouve toujours sur la premiére feuille alors que je devrais faire la mise à jour de la feuille sélectionnée.

J'ai essayer de remplacer les ThisWorkbook.Sheets(1).Range("A65536").... par ThisWorkbook.activeSheets.Range("A65536").... mais cela ne marche pas...Help me please

Je suis sûr que c'est un détail qui coince mais je n'arrive pas à voir ou.

Merci d'avance
Vovoduplo
 
Dernière édition:

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Re : Selection de cellules à copier dans un autre fichier

Bonjour

c'est effectivement un détail

A+

Code:
ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0).Range("A1:G" & Workbooks("invvueint.xls").Sheets(1).Range("A3:G" & Workbooks("invvueint.xls").Sheets(1).Range("A3").End(xlDown).Row).Rows.Count).Value = Workbooks("invvueint.xls").Sheets(1).Range("A3:G" & Workbooks("invvueint.xls").Sheets(1).Range("A3").End(xlDown).Row).Value
ActiveSheet.Range("A14:G65536").ClearContents
 

Discussions similaires

Statistiques des forums

Discussions
312 176
Messages
2 085 965
Membres
103 069
dernier inscrit
jujulop