Somme d'une plage de cellules d'un autre classeur Excel

Résolu/Fermé
Doom07 Messages postés 9 Date d'inscription mardi 9 juillet 2013 Statut Membre Dernière intervention 22 novembre 2013 - 9 juil. 2013 à 11:03
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 9 juil. 2013 à 13:48
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 !
A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
9 juil. 2013 à 11:31
Bonjour,

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
0
Doom07 Messages postés 9 Date d'inscription mardi 9 juillet 2013 Statut Membre Dernière intervention 22 novembre 2013
9 juil. 2013 à 13:42
Merci pour ta réponse rapide pijaku.
J'ai essayé ta première solution, et et et... ça fonctionne nickel !
Merci beaucoup, c'était tout con mais ça m'a bien servi.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
9 juil. 2013 à 13:44
De rien.
Dommage que la première ait fonctionné, je préfère la seconde... J'la trouve plus "propre".
C'est rien, le principal étant que cela fonctionne.
A+
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
9 juil. 2013 à 13:46
De rien.
Dommage que la première ait fonctionné, je préfère la seconde... J'la trouve plus "propre".
C'est rien, le principal étant que cela fonctionne.
A+
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
9 juil. 2013 à 13:48
De rien.
Dommage que la première ait fonctionné, je préfère la seconde... J'la trouve plus "propre".
C'est rien, le principal étant que cela fonctionne.
A+
0