Somme d'une plage de cellules d'un autre classeur Excel
Résolu
Doom07
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour tout le monde et bonjour le forum.
Voilà, je vous explique mon problème : j'aimerai faire la somme d'une plage de données qui se trouvent dans un autre classeur. Pour cela, j'ai créé un chemin d'accès au fichier avec l'onglet que je souhaite sélectionner. Ensuite, et c'est là l'objet de mon problème, je viens écrire dans la cellule que je souhaite la somme de la plage de données (la ligne en rouge dans mon code VBA). Sauf qu'à la compilation, il me met : "Incompatibilité de type". Je ne sais pas de quoi ça peut provenir. Sûrement d'une variable que je n'ai pas déclaré. Etant débutant en VBA, je compte sur tous les férus d'Excel pour résoudre mon léger souci.
Je vous mets ci-dessous le code VBA que j'ai pour l'instant écrit :
Sub ImportPoids()
' Affectation des noms des fichiers sources, destinataires et chemin d'accès
' Relève l'année et la semaine + création de l'onglet destination
Année = Cells(1, 1).Value
Semaine = Cells(2, 1).Value
Cells(5, 2).Select
Chemin = "F:\BRUNO\7 RECAP MIX\"
FichSour = "RECAP MIX " & Année & ".xls"
If Semaine < 10 Then
OngSour = "13" & " 0" & Semaine
Else
OngSour = "13" & " " & Semaine
End If
FichDest = ActiveWorkbook.Name
If Semaine < 10 Then
OngDest = Right(Année, 2) & " 0" & Semaine
Else
OngDest = Right(Année, 2) & " " & Semaine
End If
Workbooks.Open Filename:=Chemin & FichSour, UpdateLinks:=0, ReadOnly:=1
Workbooks(FichDest).Activate
' Voilà où ça bloque :
Sheets(OngDest).Cells(5, 2).Value = Application.WorksheetFunction.Sum(Range(Workbooks(FichSour).Sheets(OngSour).Cells("N7:P27")))
' Fermeture du fichier source
Workbooks(FichSour).Close (False)
End Sub
Je vous remercie d'avance pour vos (je l'espère mais je n'en doute pas) pertinentes réponses.
A bientôt !
Voilà, je vous explique mon problème : j'aimerai faire la somme d'une plage de données qui se trouvent dans un autre classeur. Pour cela, j'ai créé un chemin d'accès au fichier avec l'onglet que je souhaite sélectionner. Ensuite, et c'est là l'objet de mon problème, je viens écrire dans la cellule que je souhaite la somme de la plage de données (la ligne en rouge dans mon code VBA). Sauf qu'à la compilation, il me met : "Incompatibilité de type". Je ne sais pas de quoi ça peut provenir. Sûrement d'une variable que je n'ai pas déclaré. Etant débutant en VBA, je compte sur tous les férus d'Excel pour résoudre mon léger souci.
Je vous mets ci-dessous le code VBA que j'ai pour l'instant écrit :
Sub ImportPoids()
' Affectation des noms des fichiers sources, destinataires et chemin d'accès
' Relève l'année et la semaine + création de l'onglet destination
Année = Cells(1, 1).Value
Semaine = Cells(2, 1).Value
Cells(5, 2).Select
Chemin = "F:\BRUNO\7 RECAP MIX\"
FichSour = "RECAP MIX " & Année & ".xls"
If Semaine < 10 Then
OngSour = "13" & " 0" & Semaine
Else
OngSour = "13" & " " & Semaine
End If
FichDest = ActiveWorkbook.Name
If Semaine < 10 Then
OngDest = Right(Année, 2) & " 0" & Semaine
Else
OngDest = Right(Année, 2) & " " & Semaine
End If
Workbooks.Open Filename:=Chemin & FichSour, UpdateLinks:=0, ReadOnly:=1
Workbooks(FichDest).Activate
' Voilà où ça bloque :
Sheets(OngDest).Cells(5, 2).Value = Application.WorksheetFunction.Sum(Range(Workbooks(FichSour).Sheets(OngSour).Cells("N7:P27")))
' Fermeture du fichier source
Workbooks(FichSour).Close (False)
End Sub
Je vous remercie d'avance pour vos (je l'espère mais je n'en doute pas) pertinentes réponses.
A bientôt !
A voir également:
- Somme d'une plage de cellules d'un autre classeur Excel
- Somme de plusieurs cellules excel - Guide
- Liste déroulante excel - Guide
- Somme si couleur excel - Guide
- Déplacer une colonne excel - Guide
- Verrouiller cellules excel - Guide
2 réponses
Bonjour,
Deux essais à tenter :
1- Remplace :
Par :
Et solution 2 au cas ou la 1 ne fonctionne pas :
1- déclare une variable numérique en fonction du résultat attendu (Long ou Double)
2- après ouverture du second classeur, stocke la somme dans cette variable
3- restitue dans ton classeur 1
Un peu comme ceci :
Deux essais à tenter :
1- Remplace :
' Voilà où ça bloque : Sheets(OngDest).Cells(5, 2).Value = Application.WorksheetFunction.Sum(Range(Workbooks(FichSour).Sheets(OngSour).Cells("N7:P27")))
Par :
' Voilà où ça bloque : Sheets(OngDest).Cells(5, 2).Value = Application.WorksheetFunction.Sum(Workbooks(FichSour).Sheets(OngSour).Range("N7:P27"))
Et solution 2 au cas ou la 1 ne fonctionne pas :
1- déclare une variable numérique en fonction du résultat attendu (Long ou Double)
2- après ouverture du second classeur, stocke la somme dans cette variable
3- restitue dans ton classeur 1
Un peu comme ceci :
Dim MaSomme As Double Workbooks.Open Filename:=Chemin & FichSour, UpdateLinks:=0, ReadOnly:=1 With ActiveWorkBook.Sheets(OngSour) MaSomme = Application.WorksheetFunction.Sum(.Range("N7:P27")) End With ' Fermeture du fichier source Workbooks(FichSour).Close (False) Workbooks(FichDest).Activate With Sheets(OngDest) .Cells(5, 2).Value = MaSomme End With