INFINITY100
XLDnaute Occasionnel
Salut à tous
Voila je suis face à un petit problème, car ici j'ai un classeur nommé "Ma Facture.xlsm" qui contient l'ensemble de données à copier vers un autre classeur après l'appel d'ouverture à savoir le classeur "Mon Tableau de bord.xlsm". Jusque là tout va bien.
Sauf que lors de la copie, VBA me génère une erreur dont j'arrive pas à corriger et du coup mes données qui sont dans "Ma Facture.xlsm" ne se copie pas vers "Mon Tableau de bord.xlsm" et étant un débutant en VBA je n'ai aucune idée quoi faire.
Donc voila si quelqu'un aurait une une idée elle sera la bienvenue
Mon code d'ouverture et de copie de données :
Voici la ligne ou le code s’arrête :
NB: à noter que si je met cette ligne qui fait défaut en mode commentaire le reste du code s’exécute parfaitement
Je joins les deux fichier pour être plus explicite
Merci à vous tous pour l'aide
Cordialement
Voila je suis face à un petit problème, car ici j'ai un classeur nommé "Ma Facture.xlsm" qui contient l'ensemble de données à copier vers un autre classeur après l'appel d'ouverture à savoir le classeur "Mon Tableau de bord.xlsm". Jusque là tout va bien.
Sauf que lors de la copie, VBA me génère une erreur dont j'arrive pas à corriger et du coup mes données qui sont dans "Ma Facture.xlsm" ne se copie pas vers "Mon Tableau de bord.xlsm" et étant un débutant en VBA je n'ai aucune idée quoi faire.
Donc voila si quelqu'un aurait une une idée elle sera la bienvenue
Mon code d'ouverture et 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 Worksheets(Feuille).Range("AJ68").Value Like "*CFA*" Then
Set sh = Workbooks.Open("C:\Users\INFINITY\Desktop\Mon-Dossier\Mon Tableau de bord.xlsm").Sheets("1-CFA")
ElseIf Worksheets(Feuille).Range("AJ68").Value Like "*UREA*" Then
Set sh = Workbooks.Open("C:\Users\INFINITY\Desktop\Mon-Dossier\Mon Tableau de bord.xlsm").Sheets("2-UREA")
Else
Set sh = Workbooks.Open("C:\Users\INFINITY\Desktop\Mon-Dossier\Mon Tableau de bord.xlsm").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 :
Sub Validation()
Copier_Coller "Devis N° 100-2023 DT 1002-2023", "AJ65: AJ76"
End Sub
Voici la ligne ou le code s’arrête :
VB:
sh.Range("C" & lignevide).Resize(, Sheets(Feuille).Range(CopyRange).Count) = Application.Transpose(Range(CopyRange))
NB: à noter que si je met cette ligne qui fait défaut en mode commentaire le reste du code s’exécute parfaitement
Je joins les deux fichier pour être plus explicite
Merci à vous tous pour l'aide
Cordialement