Problème de macro sur le nommage de feuille
Résolu
cooljuly
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
Patrice33740 Messages postés 8561 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Problème de macro sur le nommage de feuille
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Bruler feuille de laurier - Guide
- Feuille de pointage excel - Télécharger - Tableur
- Comment supprimer une feuille sur word - Guide
- Comment imprimer en a5 sur une feuille a4 - Guide
5 réponses
Bonjour,
Ta macro est incomplète !
Mais il y a déjà un source d'erreur :
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
Ta macro est incomplète !
Mais il y a déjà un source d'erreur :
DerLigRecap = Cells(Rows.Count, 2).End(xlUp).Rowil 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
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.
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.
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
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
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
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
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
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
Bonjour,
N'ayant pas les fichiers, je ne peux pas touver les défauts mais :
Pour éviter la question concernant les liaisons, remplaces :
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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