Erreur dans le code? Regropement de plusieurs feuilles sur un seul fichier

Bonjour à toutes et à tous,

Tout d'abord merci de votre aide et de votre temps!

Je fais face à un petit souci dans la construction d'un macro;

Le principe : on a 5 feuilles identiques (mêmes colonnes, seules les informations des lignes changent) dans 5 fichier différents. On souhaite consolider le tout dans une feuille et fichier unique via une macro (le fichier consolider.xlsm)

J'ai le code ci-dessous, qui semble fonctionner quand je le fais de mon PC. Deslors que la macro est lancée d'un autre PC, la consolidation semble ammener des erreurs.

Qu'en pensez-vous?

Option Explicit

'Declaration des variables

Dim NomClasseur As String

Dim LigneTotal As Integer

Dim Derligne As Integer

'Procédure permettant la consolidation de plusieurs classeurs

Sub Consolider()

ChDir "C:\Desktop\FichierSource"

'On cherche le premier classeur dans le dossier

NomClasseur = Dir("C:\Desktop\FichierSource\*.xlsx")

'On boucle pour chercher tous les classeurs Excel

While Len(NomClasseur) > 0

Application.DisplayAlerts = False ' desactive les boites de dialogue d'Excel

Workbooks.Open NomClasseur 'Ouverture du classeur

LigneTotal = ActiveSheet.UsedRange.Rows.Count ' On récupère le nombre de lignes de données

Range("A2:AB" & LigneTotal).Copy 'On copie toutes les données de la feuille active'

Workbooks("Consolider.xlsm").Activate 'On revient sur le classeur de synthèse'

Derligne = ActiveSheet.UsedRange.Rows.Count + 1 'On recherche la dernière ligne vide de la feuille active

Range("C" & Derligne).Select 'On se positionne sur la dernière ligne vide de la feuille.'

ActiveSheet.Paste ' Je colle les données

Workbooks(NomClasseur).Close ' fermeture du classeur ouvert

NomClasseur = Dir 'On passe au prochain classeur

Wend

End Sub

Belle journée,

Bonjour,

J'ai le code ci-dessous, qui semble fonctionner quand je le fais de mon PC. Deslors que la macro est lancée d'un autre PC, la consolidation semble ammener des erreurs.

il semble ...que la description du souci n'est pas claire.

Si on n'est pas sûr que ça fonctionne sur un PC, comment peut-on penser que ça marche moins bien sur un autre ?

des erreurs sur une ligne de code en particulier ? sur les résultats par rapport à l'attendu ?

on a 5 feuilles identiques (mêmes colonnes, seules les informations des lignes changent) dans 5 fichier différents

est ce que ça signifie 1 feuille par fichier (comme le code pourrait le suggérer)

ou bien pour chaque fichier on a 5 feuilles à traiter ?

Dans les fichiers, y a-t-il plusieurs feuilles ? la feuille à traiter est elle celle qui s'affiche à l'ouverture ?

Par ailleurs, une chose qui pourrait "nuire" au traitement c'est le "non référencement" à un classeur( ou une feuille) des plages utilisées.

Merci algopus de votre retour.

Le fichier est utilisé par cinq utilisateurs, et quand bien même la macro tourne, le resultat final ne comporte pas le même nombre de lignes selon l'utilisateur qui va lancer la macro.

Il s'agit bien de prendre une feuille unique dans cinq fichiers différents. La feuille a traiter est la première (celle qui s'ouvre à l'ouverture)

Bien noté pour le non référencement à un classeur, savez-vous comment je pourrais modifier cela?

Merci d'avance

Pour la partie référencement , par exemple, non testé :

Sub Consolider()
dim Source as workbook, Cible as workbook, Ssheet as worksheet, Csheet as worksheet

set Cible = Activeworkbook
set Csheet =Cible.activesheet
ChDir "C:\Desktop\FichierSource"
'On cherche le premier classeur dans le dossier
NomClasseur = Dir("C:\Desktop\FichierSource\*.xlsx")
'On boucle pour chercher tous les classeurs Excel
While Len(NomClasseur) > 0
   Application.DisplayAlerts = False ' desactive les boites de dialogue d'Excel
   set Source = Workbooks.Open NomClasseur 'Ouverture du classeur
   set Ssheet=Source.ActiveSheet
   LigneTotal =Ssheet.UsedRange.Rows.Count ' On récupère le nombre de lignes de données Source
   Derligne = Csheet.UsedRange.Rows.Count + 1 'On recherche la dernière ligne vide de la feuille Cible
   'On copie toutes les données de la feuille active du fichier source sur la première ligne libre du fichier Cible
   Ssheet.Range("A2:AB" & LigneTotal).Copy  Csheet.Range("C" & Derligne)
    Source.Close ' fermeture du classeur ouvert
   NomClasseur = Dir 'On passe au prochain classeur
Wend
End Sub

Merci Algoplus,

En fait il me met une erreur de syntaxe sur la ligne ci-dessous:

set Source = Workbooks.Open NomClasseur 'Ouverture du classeur

Probablemet car Nomclasseur n'est pas déclaré dans les variables?

Set Source = Workbooks.Open(NomClasseur)
Rechercher des sujets similaires à "erreur code regropement feuilles seul fichier"