INFINITY100
XLDnaute Occasionnel
Bonjour à vous tous
Voila je reviens vers vous afin de trouver la solution à mon petit problème, car dans le classeur "Ma Facture.xlsm" j'ai un code qui fonctionne à merveille en envoyant chacune des données de la facture vers la feuille adéquate par rapport au critère choisit dans la cellule (W10) ... jusque là tout va bien.
Mon seule soucis c'est que je veux faire de même, mais envoyant ces données vers un autre classeur après ouverture à savoir "Mon Tableau de bord.xlsm" tout en gardant la même procédure de copie
Macro de copie de données :
Pour l'appel :
Je joins mes deux fichiers
Merci à vous tous
Cordialement
Voila je reviens vers vous afin de trouver la solution à mon petit problème, car dans le classeur "Ma Facture.xlsm" j'ai un code qui fonctionne à merveille en envoyant chacune des données de la facture vers la feuille adéquate par rapport au critère choisit dans la cellule (W10) ... jusque là tout va bien.
Mon seule soucis c'est que je veux faire de même, mais envoyant ces données vers un autre classeur après ouverture à savoir "Mon Tableau de bord.xlsm" tout en gardant la même procédure de copie
Macro de copie de données :
VB:
Dim sh As Worksheet
Dim sFormula1 As String
Dim sFormula2 As String
Dim DernierID As Integer
Dim lignevide As Integer
Dim MonApplication As Object
Dim MonTBdeBord As String
Sub Copier_Coller(Feuille As String, CopyRange As String)
Set MonApplication = CreateObject("Shell.Application")
MonTBdeBord = "C:\Users\INFINITY\Desktop\Mon-Dossier\Mon Tableau de bord.xlsm" 'à remplacer par le chemin du fichier
MonApplication.Open (MonTBdeBord)
Set MonApplication = Nothing
With Worksheets(Feuille).Range("AJ68")
If .Value Like "*CFA*" Then
Set sh = Sheets("1-CFA")
ElseIf .Value Like "*UREA*" Then
Set sh = Sheets("2-UREA")
Else
Set sh = Sheets("3-UFI")
End If
End With
DernierID = WorksheetFunction.Max(sh.Range("B:B"))
lignevide = sh.Range("B" & Rows.Count).End(xlUp).Row + 1
If lignevide < 3 Then lignevide = 3
sh.Cells(lignevide, 2) = DernierID + 1
sh.Range("C" & lignevide).Resize(, Sheets(Feuille).Range(CopyRange).Count) = Application.Transpose(Range(CopyRange))
sFormula1 = "=SIERREUR(SOMME($H$" & lignevide & "*$I$" & lignevide & ");""Attention ! il y a une erreur !"")"
sFormula2 = "=SIERREUR(SOMME($J$" & lignevide & ":$K$" & lignevide & ");""Attention ! il y a une erreur !"")"
sh.Cells(lignevide, "J").FormulaLocal = sFormula1
sh.Cells(lignevide, "L").FormulaLocal = sFormula2
End Sub
Pour l'appel :
VB:
Sub Validation()
Copier_Coller "Devis N° 100-2023 DT 1002-2023", "AJ65: AJ76"
End Sub
Je joins mes deux fichiers
Merci à vous tous
Cordialement
Pièces jointes
Dernière édition: