Problème de macro sur le nommage de feuille

Résolu/Fermé
cooljuly Messages postés 40 Date d'inscription mercredi 23 mars 2016 Statut Membre Dernière intervention 6 septembre 2016 - 19 avril 2016 à 16:29
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 25 avril 2016 à 11:20
Bonjour,

j'ai un petit soucis sur une de mes macro :
- j'ai un bon en onglet 1 (qui correspond en fait Feuil4) et quand je clique dessus je voudrais que les données consolidées se mettent en feuil1 (comme inscrit ci-dessous).

le problème que j'ai c'est que quand je clique sur le bouton, les données vont sur la même page que le bouton et pas en Feuil1

je précise que je ne voudrais pas noter la feuille 1 dans la macro par son vraie nom car je ne suis jamais à l'abri que quelqu'un modifie le nom. En gros je voudrais protéger mes feuilles au cas où les noms changent

Feuil1 = ma feuille de conso où les données devraient être
Feuil2 = table de données qui me servira à faire une recherche V
Feuil3 = feuille pour un TCD
Feuil4 = Feuille où il y a les boutons

voici la macro en question :

Sub syntèseClasseurs()
Dim ClasseurRecap As Workbook, feuilRec As Worksheet, feuilTable As Worksheet
Dim ClassImp As String, NomFeuilleImp As String, Repertoire As String, DerLigRecap As Long, DerLigImp As Long, Poste As Variant, Pays As Variant, Code As String
Dim i As Integer ' Pour comptage des feuilles

'Rows("3:" & Cells(Rows.Count, 2).End(xlUp).Row + 1).Delete

'--- Limitation des applications.
Application.ScreenUpdating = False
Application.DisplayAlerts = False

'--- Détermination des variables.
Set ClasseurRecap = ThisWorkbook: Set feuilRec = Feuil1: Set feuilTable = Feuil2
DerLigRecap = Cells(Rows.Count, 2).End(xlUp).Row
Repertoire = ThisWorkbook.Path: ClassImp = Dir(Repertoire & "\*.xls*") ' premier fichier


' Détermination DernièreLigne
If DerLigRecap <= 1 Then
DerLigRecap = 2
End If

'--- On boucle les fichiers.
Do While ClassImp <> "" ' Pour chaque fichier
If ClassImp <> ThisWorkbook.Name Then
Workbooks.Open Filename:=Repertoire & "\" & ClassImp



merci par avance pour votre aide
A voir également:

5 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 19/04/2016 à 19:50
Bonjour,

Ta macro est incomplète !

Mais il y a déjà un source d'erreur :
DerLigRecap = Cells(Rows.Count, 2).End(xlUp).Row 
il est plus sûr de préciser dans quelle feuille, tu cherches la dernière ligne.

D'autre part, si tu utilises le CodeName des objets (Feuil1, ...) il est inutile de définir en plus une variable objet !
Par contre, pour limiter les problèmes, il est préférable de les renommer différemment du nom par défaut (modifier directement le CodeName à partir du VBE dans la fenêtre propriétés). Par exemple tu pourrais renommer Feuil1 en feuilRec et Feuil2 en feuilTable.

Cordialement
Patrice
0
cooljuly Messages postés 40 Date d'inscription mercredi 23 mars 2016 Statut Membre Dernière intervention 6 septembre 2016
20 avril 2016 à 09:40
Bonjour Patrice,
merci pour ta réponse
En fait, j'ai oublié de préciser que la macro sert à compiler plusieurs classeurs différents (c'est pour ça que je mentionne le code de la dernière ligne car celle-ci varie et cela m'évite d'avoir des lignes vides.

je n'ai pas trop compris la règle sur les feuil

je mets ci-dessous le lien pour le classeur avec la macro intégrale :
http://www.cjoint.com/c/FDuhOaPWEUw

merci par avance
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
20 avril 2016 à 13:53
Bonjour,

La principale source d'erreur vient du fait que tu utilises l'objet actif et le référencement implicite au lieu de référencer clairement chaque objet.
Tu devrais définir chaque objet et supprimer les Activate, Select, Activesheet, ..., inutiles et sources d'erreurs.
0
cooljuly Messages postés 40 Date d'inscription mercredi 23 mars 2016 Statut Membre Dernière intervention 6 septembre 2016
21 avril 2016 à 11:17
bonjour et encore merci.

du coup quand j'ai nommé Set FeuilRec = Feuil1 pour nommer la feuille où je souhaite que les données s'importent ce n'est pas bon ?

désolée, mais je tatonne encore beaucoup en VBA.

où alors il faudrait que je trouve comment dire que les données copiées dans chaque onglets des classeurs qui sont sur le même répertoire se copient dans la Feuil1
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
21 avril 2016 à 15:36
Bonjour,

Regardes si ça convient, j'ai renommé Feuil1 en feuilRec, et redéfini et conservé uniquement les variables utiles :
https://www.cjoint.com/c/FDvnKarXQJf
0
Bonjour,

oui c'est quasi bon sauf que je ne comprends pas pourquoi par rapport à la version précédent, la macro me remonte également certaine fois l'intitulé de la ligne de dessus (exemple le nom de colonne qui se trouve sur les fichiers)

il me semble que cela provient du lien qui se fait automatiquement. Même en le supprimant il revient. Et ce qui est bizarre, c'est qu'au lancement de la macro, il me dit 4 fois qu'il trouve des liaisons (alors que je n'en veut pas), je fais "ne pas actualiser" et après il me dit qu'il a trouvé une table "couleur" qui sort de gestionnaire des noms et quand je la supprime car je n'en veut pas, elle revient...

http://www.cjoint.com/c/FDwkCVHaqTw
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
22 avril 2016 à 13:52
Bonjour,

N'ayant pas les fichiers, je ne peux pas touver les défauts mais :
Pour éviter la question concernant les liaisons, remplaces :
Set wbkImp = Workbooks.Open(Filename:=Repertoire & "\" & nomImp)
Par cette ligne qui ne met pas à jour les liaisons à l'ouverture :
Set wbkImp = Workbooks.Open(Filename:=Repertoire & "\" & nomImp, UpdateLinks:=2)

Pour la ligne de titre qui apparaît parfois c'est parce que cette ligne se trouve sur la ligne 4 dans ces fichier !

Si tous les fichiers ne sont pas identiques au début, il est possible de chercher la première ligne a condition que :
- cette première ligne existe dans tous les fichiers
- il y ait un moyen de la repérer sans ambigüité (par exemple, un titre de colonne qui apparaît de façon certaine dans chaque fichier)

Quand à la table Couleur quel est exactement message ??? S'agit-il d'une plage nommée dans un des fichiers ?

Dans l'attente d'une réponse ..;

Patrice
0
cooljuly44 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
22 avril 2016 à 14:44
Par contre pour les liaisons, c'est vraiment bizarre, car m'affiche toujours la fenêtre malgré la correction apportée.

Voici le fichier qui remonte en erreur avec la ligne de titre (ligne 3) et les autres onglets qui contiennent Exemple
http://www.cjoint.com/c/FDwmJSB1AJw

voici un fichier correct
http://www.cjoint.com/c/FDwmLthEJiw

voici la fenêtre pour la table Couleur :
http://www.cjoint.com/c/FDwmNkFhcTw
j'ai regardé et cette table (que je n'ai pas créé car je suis partie d'un fichier vierge pour faire la macro) fait référence à un répertoire auquel je n'ai même pas accès. De plus en regardant le lien, je vois qu'elle apparaît à cause d'un fichier qui n'est pas dans mon répertoire non plus...

c'est un lien d'un autre service qui retombe automatiquement dans ma macro.

si jamais tu as une solution miracle ? :)

à chaque fois que je supprime la liaison et la table, elles reviennent

merci en tout cas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
22 avril 2016 à 17:07
Bonjour,

Je n'arrive pas à reproduire ton problème de mise à jour de liaisons, il ne se produit pas avec tes 2 fichiers.

Pour la ligne de titre, je détermine sa position en cherchant le titre "NOM, Prénom", ce qui permet aussi de vérifier que l'organigramme n'est pas vide.

Pour le nom "Couleur", il est probable qu'un des fichiers y fasse référence dans une formule. En copiant les valeurs, cela ne devrait pas se produire.

Voilà :
https://www.cjoint.com/c/FDwo5X2MHCf
0
merci Patrice. Cela fonctionne.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
25 avril 2016 à 11:20
Bonjour,

Si c'est terminé, passe le post en résolu

Patrice
0