Macro automatique
Résolu/Fermé
Olivier2313
Messages postés
29
Date d'inscription
dimanche 11 janvier 2015
Statut
Membre
Dernière intervention
17 novembre 2017
-
14 janv. 2015 à 14:59
Olivier2313 Messages postés 29 Date d'inscription dimanche 11 janvier 2015 Statut Membre Dernière intervention 17 novembre 2017 - 17 janv. 2015 à 19:12
Olivier2313 Messages postés 29 Date d'inscription dimanche 11 janvier 2015 Statut Membre Dernière intervention 17 novembre 2017 - 17 janv. 2015 à 19:12
A voir également:
- Macro automatique
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Message automatique thunderbird - Guide
- Macro word - Guide
- Logiciel de sauvegarde automatique gratuit - Guide
4 réponses
via55
Messages postés
14504
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
21 décembre 2024
2 738
15 janv. 2015 à 01:18
15 janv. 2015 à 01:18
Bonsoir
En supposant les noms des onglets dans la colonne B de Feuil1
Dans le Worksheet de la Feuil 1 mettre la macro suivante (à adapter à ton fichier :
Cdlmnt
En supposant les noms des onglets dans la colonne B de Feuil1
Dans le Worksheet de la Feuil 1 mettre la macro suivante (à adapter à ton fichier :
Public ancien As String ' AU CHANGEMENT DE SELECTION d'une cellule de la feuille Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' gestion erreur (selection plusieurs cellules par ex) On Error Resume Next ' si pas en colonne B sortie If Target.Column <> 2 Then Exit Sub ' recupere la valeur existant dans la cellule ancien = Target.Value End Sub 'A L'ENTREE D'UNE VALEUR dans une cellule Private Sub Worksheet_Change(ByVal Target As Range) ' si pas en colonne B sortie If Target.Column <> 2 Then Exit Sub ' recupere valeur qui vient d'être entrée dans cellule nouveau = Target.Value 'boucle sur toutes les feuilles du classeur For n = 1 To Sheets.Count ' remplace ancien nom par le nouveau If Sheets(n).Name = ancien Then Sheets(n).Name = nouveau Next ' vide la variable ancien ancien = "" End Sub
Cdlmnt
Olivier2313
Messages postés
29
Date d'inscription
dimanche 11 janvier 2015
Statut
Membre
Dernière intervention
17 novembre 2017
2
16 janv. 2015 à 19:00
16 janv. 2015 à 19:00
Bonsoir,
Tout d'abord merci de prendre du temps pour m'aider.
Cela ne fonctionne toujours pas, j'ai essayé mais en vain.
J'ai bien rajouté la ligne comme indiqué et là il ne m'indique pas de message d'erreur et ne me souligne rien.
Je ne comprends pas.
Ma macro est Sub Feuilles()
Sheets (2).Name = Range ("Articles!D2".Value
ainsi de suite (j'ai 30 feuilles)
Ensuite j'ai rentré ta macro.
Encore merci.
Coridalement.
Tout d'abord merci de prendre du temps pour m'aider.
Cela ne fonctionne toujours pas, j'ai essayé mais en vain.
J'ai bien rajouté la ligne comme indiqué et là il ne m'indique pas de message d'erreur et ne me souligne rien.
Je ne comprends pas.
Ma macro est Sub Feuilles()
Sheets (2).Name = Range ("Articles!D2".Value
ainsi de suite (j'ai 30 feuilles)
Ensuite j'ai rentré ta macro.
Encore merci.
Coridalement.
via55
Messages postés
14504
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
21 décembre 2024
2 738
16 janv. 2015 à 19:47
16 janv. 2015 à 19:47
Bonsoir Olivier
Si je comprends bien tu nommes des 30 feuilles d'après les valeurs contenues dans 30 cellules de la feuille Articles ? (Au passage si le nom pour la feuille 2 est en D2, le nom pour la feuille 3 est en D3 etc tu peux raccourcir ta macro de 30 lignes par une boucle For Next qui incrémentera une valeur n qui dans une seule ligne attribue à la bonne feuille le bon nom Sheets (n).Name = Range ("Articles!D" & n).Value )
Ensuite tu voudrais que chaque fois que tu changes un nom dans ta feuille Articles le nom de la feuille correspondante soit changé automatiquement ?
Donc ma macro correspond bien à ce que tu cherches mais il faut bien :
- d'une part que le n° corresponde bien à la colonne où sont tes données dans les 2 lignes If Target.Column <> 2 Then Exit Sub j'avais mis 2 comme exemple pour la colonne B mais toi si tes données sont dans la colonne D c'est 4 qu'il faut mettre
- d'autre part il faut bien mettre la macro non pas à la suite de la tienne qui doit être dans un Module mais dans le worksheet de la feuille Articles, dans l'editeur VBA selectionner la feuille Articles dans l'arborescence à gauche par double clic, coller la macro dans la page vierge de droite
Si ça ne fonctionne toujours pas post une exemple allégé et anonymé de ton fichier sur c joint.com et reviens m'indiquer le lien fourni, je regarderai ça
Cdlmnt
Si je comprends bien tu nommes des 30 feuilles d'après les valeurs contenues dans 30 cellules de la feuille Articles ? (Au passage si le nom pour la feuille 2 est en D2, le nom pour la feuille 3 est en D3 etc tu peux raccourcir ta macro de 30 lignes par une boucle For Next qui incrémentera une valeur n qui dans une seule ligne attribue à la bonne feuille le bon nom Sheets (n).Name = Range ("Articles!D" & n).Value )
Ensuite tu voudrais que chaque fois que tu changes un nom dans ta feuille Articles le nom de la feuille correspondante soit changé automatiquement ?
Donc ma macro correspond bien à ce que tu cherches mais il faut bien :
- d'une part que le n° corresponde bien à la colonne où sont tes données dans les 2 lignes If Target.Column <> 2 Then Exit Sub j'avais mis 2 comme exemple pour la colonne B mais toi si tes données sont dans la colonne D c'est 4 qu'il faut mettre
- d'autre part il faut bien mettre la macro non pas à la suite de la tienne qui doit être dans un Module mais dans le worksheet de la feuille Articles, dans l'editeur VBA selectionner la feuille Articles dans l'arborescence à gauche par double clic, coller la macro dans la page vierge de droite
Si ça ne fonctionne toujours pas post une exemple allégé et anonymé de ton fichier sur c joint.com et reviens m'indiquer le lien fourni, je regarderai ça
Cdlmnt
Olivier2313
Messages postés
29
Date d'inscription
dimanche 11 janvier 2015
Statut
Membre
Dernière intervention
17 novembre 2017
2
17 janv. 2015 à 13:35
17 janv. 2015 à 13:35
Bonjour,
Je n'y arrive toujours pas, j'ai bien suivi toutes les instructions mais cela ne fonctionne pas, je me casse la tête.
Comme demandé je post le lien de mon projet.
https://www.cjoint.com/?3ArnNuOKHhc
Cordialement.
Je n'y arrive toujours pas, j'ai bien suivi toutes les instructions mais cela ne fonctionne pas, je me casse la tête.
Comme demandé je post le lien de mon projet.
https://www.cjoint.com/?3ArnNuOKHhc
Cordialement.
via55
Messages postés
14504
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
21 décembre 2024
2 738
>
Olivier2313
Messages postés
29
Date d'inscription
dimanche 11 janvier 2015
Statut
Membre
Dernière intervention
17 novembre 2017
17 janv. 2015 à 18:01
17 janv. 2015 à 18:01
Bonjour
Le lien ne fonctionne pas, peux tu retelecharger le fichier et m'indiquer le nouveau lien ?
Dans l'attente
Cdlmnt
Le lien ne fonctionne pas, peux tu retelecharger le fichier et m'indiquer le nouveau lien ?
Dans l'attente
Cdlmnt
Olivier2313
Messages postés
29
Date d'inscription
dimanche 11 janvier 2015
Statut
Membre
Dernière intervention
17 novembre 2017
2
17 janv. 2015 à 17:53
17 janv. 2015 à 17:53
Bonjour,
J'ai oublié peut être d'être plus explicite, ce que je souhaiterai s'est que les noms des feuilles correspondent aux cellules de D2 à AG2.
Cordialement.
J'ai oublié peut être d'être plus explicite, ce que je souhaiterai s'est que les noms des feuilles correspondent aux cellules de D2 à AG2.
Cordialement.
via55
Messages postés
14504
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
21 décembre 2024
2 738
17 janv. 2015 à 18:10
17 janv. 2015 à 18:10
Re
Bon alors pas d'affolement, normal que ma macro ne fonctionne pas elle est prévue pour des valeurs sur une même colonne et d'après ton dernier message tes valeurs sont sur la même ligne !
Il faut donc adapter les macros en ce sens :
Cdlmnt
Bon alors pas d'affolement, normal que ma macro ne fonctionne pas elle est prévue pour des valeurs sur une même colonne et d'après ton dernier message tes valeurs sont sur la même ligne !
Il faut donc adapter les macros en ce sens :
Public ancien As String Public nouveau As String ' AU CHANGEMENT DE SELECTION d'une cellule de la feuille Private Sub Worksheet_SelectionChange(ByVal Target As Range) ' gestion erreur (selection plusieurs cellules par ex) On Error Resume Next ' si pas en colonne B sortie If Not Intersect(Target, Range("D2:AG2")) Is Nothing Then ' recupere la valeur existant dans la cellule ancien = Target.Value End If End Sub 'A L'ENTREE D'UNE VALEUR dans une cellule Private Sub Worksheet_Change(ByVal Target As Range) ' si pas en colonne B sortie If Not Intersect(Target, Range("D2:AG2")) Is Nothing Then ' recupere valeur qui vient d'être entrée dans cellule nouveau = Target.Value 'boucle sur toutes les feuilles du classeur For n = 1 To Sheets.Count ' remplace ancien nom par le nouveau If Sheets(n).Name = ancien Then Sheets(n).Name = nouveau Next End If ' vide la variable ancien ancien = "" End Sub
Cdlmnt
Olivier2313
Messages postés
29
Date d'inscription
dimanche 11 janvier 2015
Statut
Membre
Dernière intervention
17 novembre 2017
2
>
via55
Messages postés
14504
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
21 décembre 2024
17 janv. 2015 à 19:12
17 janv. 2015 à 19:12
Bonsoir,
Yes perfect.
Cela fonctionne maintenant, vraiment un grand merci pour tout.
Cordialement
Yes perfect.
Cela fonctionne maintenant, vraiment un grand merci pour tout.
Cordialement
15 janv. 2015 à 20:57
J'ai rentré votre formule, mais cela ne fonctionne pas.
J'ai un message d'erreur "erreur de compilation : Etiquette non définie" et il me souligne la première ligne Private Sub Worksheet_SelectionChange(ByVal Target As Range).
Cordialement.
15 janv. 2015 à 22:09
Tu as sans doute d'autres macros dans le même classeur avec Option Explicit qui demande de déclarer toutes les variables et comme dans ma macro je n'ai déclaré que la variable ancien pas la variable nouveau ! Le titre de la macro qui dysfonctionne est surligné c'est normal mais l'endroit précis du dysfonctionnement doit l'être aussi en l'occurrence le mot nouveau pour indiquer où est la variable non définie
Rajoutes en tête de macro la ligne
Public nouveau As String
Si ça ne fonctionne toujours pas , regarder dans la macro ce qui est souligné d'autres lorsque survient l'erreur
Cdlmnt