Synthese par la somme de plusieurs classeurs

Résolu/Fermé
Melvine5136 - 21 oct. 2016 à 19:55
 Melvine5136 - 27 oct. 2016 à 10:22
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

5 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
24 oct. 2016 à 10:29
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 :
'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
1
Melvine5136
25 oct. 2016 à 18:04
merci pour le code gbinforme mais il génère une erreur disant que le lien que j'ai entré dans mon fichier config est introuvable. l'erreur se situe à la ligne de
Workbooks.Open cell_recup
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
25 oct. 2016 à 18:12
Bonjour,

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
Workbooks.Open "C:\répertoire1\répertoire2\" & cell_recup
0
Melvine5136
25 oct. 2016 à 18:21
ON ME remet la meme chose
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
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
Modifié par gbinforme le 25/10/2016 à 22:19
Dans "cell_recup" tu as quelle valeur ?
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
cell_recup = Range("A" & i & " ") 

en
cell_recup = ThisWorkbook.Range("A" & i & " ")


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.
0
Melvine5136
26 oct. 2016 à 12:09
Merci Gbinforme mon patron vient de passer à mon bureau et se fut une belle prestation car nous avons essayer d'entrer 10 liens dans le fichier config et il marche parfaitement et en à peine 4 minutes. mercii à toi.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 22/10/2016 à 08:48
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
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
23 oct. 2016 à 21:55
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 ;-)

0
Utilisateur anonyme
23 oct. 2016 à 22:11
Lol,

tu veux jouer à celui qui pisse le + loin ?

Les faits sont là. C'est tout.

Pour 1968, je pense que le jour où tu auras mes engagements, on en reparlera... Tu es mal tombé je crois lol.

A+
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > Utilisateur anonyme
24 oct. 2016 à 10:35
Pour 1968, je pense que le jour où tu auras mes engagements, on en reparlera...es

Ah bon !
t'étais CRS ?
0
Utilisateur anonyme > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
24 oct. 2016 à 21:04
Je parle d'engagements actuels...

Mais bon j'arrête là, ce n'est pas le but de ce forum.
0
Utilisateur anonyme
22 oct. 2016 à 23:14
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+

-1
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
22 oct. 2016 à 23:35
Bonjour HDU,

C'est source de bug présent ou à venir.
Tu pourrais expliquer plus précisément ce concept ?
0
Utilisateur anonyme > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
Modifié par HDU le 23/10/2016 à 01:56
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 ?
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 688
23 oct. 2016 à 11:15
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. ;-)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303 > gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020
23 oct. 2016 à 11:51
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
0

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
-2