Synthese par la somme de plusieurs classeurs
Résolu
Melvine5136
-
Melvine5136 -
Melvine5136 -
Bonsoir j'espère que vous allez bien j'ai un pti soucis. mon patron ma demandé de créer un fichier synthèse qui fais la synthèse de plus de 10 classeurs entré en lien dans un fichier dénommé un fichier_config(qui est en fait un fichier avec un tableau qui comprend des lien menant à des fichiers)
le code que j'ai fais crèe un fichier dénommé SYNTHESE OCIT TEST qui récupère d'abord des colonnes et lignes fixes (qui sont les libéllés du tableau) ensuite il parcours le fichier config donc chaque fichier par les liens entrés dans le fichier config et fait la somme de chaque plage de cellule de chaque fichier du fichier config et les met dans la plage notifié dans le code dans le fichier SYNTHESE OCIT TEST
jne sais si j'ai ete clair mais voici mon code
Sub creationSynthese()
Dim cell_recup As String
Compt_cel = Application.WorksheetFunction.CountA(Range("A:D"))
MsgBox ("Vous avez entré" & Compt_cel & "de lien menant à des fichiers")
'CREATION DU FICHIER DE SYNTHESE '
Workbooks.Add
'ENREGISTRMENT DU CLASSEUR DE SYNTHESE"
ActiveWorkbook.SaveAs Filename:=("C:\Users\t_rokouadio\Documents\Synthèse OCIT test.xls")
'COPIE DES CELLULES FIXES'
With Workbooks("Synthèse OCIT test.xls").Sheets("Feuil1").Range("A16:B528")
.Formula = "='C:\Users\t_rokouadio\Documents\Automatisation\Budget 2015\2 - Opex\22 - Pôle Support\[Budget SG 2015]Synthèse Social'!A16:B528"
End With
With Workbooks("Synthèse OCIT test.xls").Sheets("Feuil1").Range("D13:CL14")
.Formula = "='C:\Users\t_rokouadio\Documents\Automatisation\Budget 2015\2 - Opex\22 - Pôle Support\[Budget SG 2015]Synthèse Social'!D13:CL14"
End With
'FIN DE LA COPIE DES CELLULES FIXES'
Workbooks("Synthèse OCIT test.xls").Sheets("Feuil1").Range("D16:CL528").Value = 0
'RECUPERATION DES LIENS ENTRER DANS LE FICHIER CONFIG'
For i = 1 To Compt_cel
cell_recup = Range("A" & i & " ")
If FichierExiste(cell_recup) = True Then
'somme des differents classeurs'
Workbooks("Synthèse OCIT test.xls").Sheets("Feuil1").Range("D16:CL528").Value = Workbooks("Synthèse OCIT test.xls").Sheets("Feuil1").Range("D16:CL528").Value + Workbooks("cell_recup").Sheets("Synthèse Sociale").Range("D16:CL528").Value
Else
MsgBox ("Le lien entré dans la cellule" & i & "de la colonne " & i & " et de la ligne " & i & "n'existe pas")
End If
Next i
End Sub
Public Function FichierExiste(cell_recup As String)
'VERIFICATION DE LEXISTENCE DU FICHIER ENTRER DANS LE FICHIER CONFIG'
'Dir() retourne le nom du fichier testé si ce fichier existe'
'Len() retourne comme résultat le nombre de caractères dans une chaîne de caractères'
If Len(Dir(cell_recup)) > 0 Then
FichierExiste = True
Else
FichierExiste = False
End If
End Function
mon problème se situe au niveau de la ligne du commentaire 'somme des differents classeurs'
aidez moi svp
le code que j'ai fais crèe un fichier dénommé SYNTHESE OCIT TEST qui récupère d'abord des colonnes et lignes fixes (qui sont les libéllés du tableau) ensuite il parcours le fichier config donc chaque fichier par les liens entrés dans le fichier config et fait la somme de chaque plage de cellule de chaque fichier du fichier config et les met dans la plage notifié dans le code dans le fichier SYNTHESE OCIT TEST
jne sais si j'ai ete clair mais voici mon code
Sub creationSynthese()
Dim cell_recup As String
Compt_cel = Application.WorksheetFunction.CountA(Range("A:D"))
MsgBox ("Vous avez entré" & Compt_cel & "de lien menant à des fichiers")
'CREATION DU FICHIER DE SYNTHESE '
Workbooks.Add
'ENREGISTRMENT DU CLASSEUR DE SYNTHESE"
ActiveWorkbook.SaveAs Filename:=("C:\Users\t_rokouadio\Documents\Synthèse OCIT test.xls")
'COPIE DES CELLULES FIXES'
With Workbooks("Synthèse OCIT test.xls").Sheets("Feuil1").Range("A16:B528")
.Formula = "='C:\Users\t_rokouadio\Documents\Automatisation\Budget 2015\2 - Opex\22 - Pôle Support\[Budget SG 2015]Synthèse Social'!A16:B528"
End With
With Workbooks("Synthèse OCIT test.xls").Sheets("Feuil1").Range("D13:CL14")
.Formula = "='C:\Users\t_rokouadio\Documents\Automatisation\Budget 2015\2 - Opex\22 - Pôle Support\[Budget SG 2015]Synthèse Social'!D13:CL14"
End With
'FIN DE LA COPIE DES CELLULES FIXES'
Workbooks("Synthèse OCIT test.xls").Sheets("Feuil1").Range("D16:CL528").Value = 0
'RECUPERATION DES LIENS ENTRER DANS LE FICHIER CONFIG'
For i = 1 To Compt_cel
cell_recup = Range("A" & i & " ")
If FichierExiste(cell_recup) = True Then
'somme des differents classeurs'
Workbooks("Synthèse OCIT test.xls").Sheets("Feuil1").Range("D16:CL528").Value = Workbooks("Synthèse OCIT test.xls").Sheets("Feuil1").Range("D16:CL528").Value + Workbooks("cell_recup").Sheets("Synthèse Sociale").Range("D16:CL528").Value
Else
MsgBox ("Le lien entré dans la cellule" & i & "de la colonne " & i & " et de la ligne " & i & "n'existe pas")
End If
Next i
End Sub
Public Function FichierExiste(cell_recup As String)
'VERIFICATION DE LEXISTENCE DU FICHIER ENTRER DANS LE FICHIER CONFIG'
'Dir() retourne le nom du fichier testé si ce fichier existe'
'Len() retourne comme résultat le nombre de caractères dans une chaîne de caractères'
If Len(Dir(cell_recup)) > 0 Then
FichierExiste = True
Else
FichierExiste = False
End If
End Function
mon problème se situe au niveau de la ligne du commentaire 'somme des differents classeurs'
aidez moi svp
A voir également:
- Synthese par la somme de plusieurs classeurs
- Somme de plusieurs cellules excel - Guide
- Somme si couleur - Guide
- Somme en anglais excel - Guide
- Erreur de somme de contrôle - Forum Logiciels
- Somme si ens ou ✓ - Forum Excel
5 réponses
Bonjour à tous,
@Melvine5136
selon la méthode suggérée par Michel (salut à toi) je te propose ceci en fonction de ce que tu as écris :
@Melvine5136
selon la méthode suggérée par Michel (salut à toi) je te propose ceci en fonction de ce que tu as écris :
'RECUPERATION DES LIENS ENTRER DANS LE FICHIER CONFIG' Dim lig As Long, col As Long, tbd For i = 1 To Compt_cel cell_recup = Range("A" & i & " ") If FichierExiste(cell_recup) = True Then Workbooks.Open cell_recup tbd = ActiveWorkbook.Sheets("Synthèse Sociale").UsedRange.Cells.Value ActiveWorkbook.Close SaveChanges:=False 'somme des differents classeurs' With Workbooks("Synthèse OCIT test.xls").Sheets("Feuil1") For lig = 16 To 528 For col = 4 To 90 .Cells(lig, col).Value = .Cells(lig, col).Value + tbd(lig, col) Next col Next lig End With Else MsgBox ("Le lien entré dans la cellule" & i & "de la colonne " & i & " et de la ligne " & i & "n'existe pas") End If Next i
Bonjour,
est ce une erreur de type 13 ?
si oui et à mon avis, il faut additionner cellule par cellule mais alors tu as intér^t à passer par des variable tableaux compte tenu de la taille des plages à additionner
tu dis...
Michel
est ce une erreur de type 13 ?
si oui et à mon avis, il faut additionner cellule par cellule mais alors tu as intér^t à passer par des variable tableaux compte tenu de la taille des plages à additionner
tu dis...
Michel
Bonsoir,
Il est malheureusement courant de voir des bugs à cause de cela
C'est sûr que tu ne verras pas tout ce qui fonctionne parfaitement car c'est totalement absent des forums.
C'est toujours plus facile de trouver les erreurs effectuées qui sont légion car l'erreur est humaine que de trouver le paramétrage recherché car celui qui le connait n'a aucune raison de le publier à nouveau.
Pour toi, je vois que 68 est mort et bien mort : il est primordial d'interdire avoir toute autre action mais je préfère toujours ;-)
Il est malheureusement courant de voir des bugs à cause de cela
C'est sûr que tu ne verras pas tout ce qui fonctionne parfaitement car c'est totalement absent des forums.
C'est toujours plus facile de trouver les erreurs effectuées qui sont légion car l'erreur est humaine que de trouver le paramétrage recherché car celui qui le connait n'a aucune raison de le publier à nouveau.
Pour toi, je vois que 68 est mort et bien mort : il est primordial d'interdire avoir toute autre action mais je préfère toujours ;-)

Bonjour,
ce n'est peut-être pas le souci, mais, tes noms de fichiers et répertoires contiennent des accents et des espaces. C'est source de bug présent ou à venir.
Donc commences par éliminer cela.
A+
ce n'est peut-être pas le souci, mais, tes noms de fichiers et répertoires contiennent des accents et des espaces. C'est source de bug présent ou à venir.
Donc commences par éliminer cela.
A+
Ce n'est pas un concept, c'est qu'en programmation, gérer les espaces, selon le système, est compliqué.
Un nom de fichier sans espaces évite d'insérer des " " et ou %20 ou encore des [ ].
Un nom de fichier avec accents ou caractères exotiques, oblige à déjà définir un encodage.
Donc, oui, un accès à un fichier "debut_alinea" sera moins buggogène qu'un accès à un fichier "début alinéa".
Si tu veux des exemples, google est ton ami
Un exemple : https://linuxfr.org/forums/programmation-shell/posts/espaces-dans-les-noms-de-fichiers
Un autre : https://forums.commentcamarche.net/forum/affich-3968147-shell-probleme-avec-boucle-find-et-espaces
Encore ?
Un nom de fichier sans espaces évite d'insérer des " " et ou %20 ou encore des [ ].
Un nom de fichier avec accents ou caractères exotiques, oblige à déjà définir un encodage.
Donc, oui, un accès à un fichier "debut_alinea" sera moins buggogène qu'un accès à un fichier "début alinéa".
Si tu veux des exemples, google est ton ami
Un exemple : https://linuxfr.org/forums/programmation-shell/posts/espaces-dans-les-noms-de-fichiers
Un autre : https://forums.commentcamarche.net/forum/affich-3968147-shell-probleme-avec-boucle-find-et-espaces
Encore ?
sinon j'ai tendance à garder mes reflexes de vieux rootard, pas d'accent et pas d'espace dans les noms de dossiers/fichiers. donc remplacer les espaces par des _
Rares doivent être les utilisateurs de DOS et sous Win 10 l'on a des paramètres régionaux qui permettent d'écrire en français correct.
Maintenant, l'on ne peut pas facilement revenir à la manivelle pour démarrer les voitures mais l'on peut le faire tout de même avec une voiture de collection : chacun choisit son époque. ;-)
Rares doivent être les utilisateurs de DOS et sous Win 10 l'on a des paramètres régionaux qui permettent d'écrire en français correct.
Maintenant, l'on ne peut pas facilement revenir à la manivelle pour démarrer les voitures mais l'on peut le faire tout de même avec une voiture de collection : chacun choisit son époque. ;-)
Salut gb
D'accord avec toi d'autant plus qu'on ne sait pas ce qui provoque l'erreur et sur quelle ligne !!
Il est donc vain de sortir des hypothèses concernant les espaces et accents.
Excel étant un logiciel pour tous et non réservé à des informaticiens "pur porc",, il n'y a que quelques cas où il faut les proscrire comme par exemple avec SQL mais cela suppose de bonnes connaissances et expérience en VBA
Bon dimanche à toi
D'accord avec toi d'autant plus qu'on ne sait pas ce qui provoque l'erreur et sur quelle ligne !!
Il est donc vain de sortir des hypothèses concernant les espaces et accents.
Excel étant un logiciel pour tous et non réservé à des informaticiens "pur porc",, il n'y a que quelques cas où il faut les proscrire comme par exemple avec SQL mais cela suppose de bonnes connaissances et expérience en VBA
Bon dimanche à toi
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Là le souci de base était bien du vba...
Si je préconise aucun espace, aucun caractère exotique, c'est du vécu.
Je n'ai pas demandé à limiter le nom à 8 caractères...
Il est malheureusement courant de voir des bugs à cause de cela. Donc, il faut commencer par éliminer cela avant de passer à autre chose.
A+
PS : un autre ex : https://www.developpez.net/forums/d1190154/logiciels/microsoft-office/excel/macros-vba-excel/probleme-d-accents-l-import-txt/
Puis ici : https://forums.commentcamarche.net/forum/affich-1664465-requete-sql-espace-nom-table
Enfin, j'arrête là : https://www.developpez.net/forums/d611491/bases-donnees/mysql/requetes/espace-nom-champ/
Quand Jimmy dit What'd I say
I love you baby
C'est comme qui dirait
Toute la province qui chante en anglais
Si je préconise aucun espace, aucun caractère exotique, c'est du vécu.
Je n'ai pas demandé à limiter le nom à 8 caractères...
Il est malheureusement courant de voir des bugs à cause de cela. Donc, il faut commencer par éliminer cela avant de passer à autre chose.
A+
PS : un autre ex : https://www.developpez.net/forums/d1190154/logiciels/microsoft-office/excel/macros-vba-excel/probleme-d-accents-l-import-txt/
Puis ici : https://forums.commentcamarche.net/forum/affich-1664465-requete-sql-espace-nom-table
Enfin, j'arrête là : https://www.developpez.net/forums/d611491/bases-donnees/mysql/requetes/espace-nom-champ/
Quand Jimmy dit What'd I say
I love you baby
C'est comme qui dirait
Toute la province qui chante en anglais
Workbooks.Open cell_recup
Dans "cell_recup" il doit y avoir le chemin complet du classeur. Si tu n'as que le nom du classeur, il faut rajouter le chemin par exemple
voici
'C:\Users\t_rokouadio\Documents\Automatisation\Budget 2015\2 - Opex\22 - Pôle Support' introuvable verifiez l'ortographe du nom du classeur et la validité de l'emplacement
Ce devrait aussi être la valeur de A1 mais apparemment cette cellule n'est pas renseignée car tu n'es pas sur le bon classeur. Il faudrait changer
en
Si tu as mis 10 classeurs entré en lien dans un fichier dénommé un fichier_config(qui est en fait un fichier avec un tableau qui comprend des lien menant à des fichiers) , il ne faut pas de liens hypertexte mais simplement le chemin complet du classeur.