[MACRO] Créer un onglet nommé avec le contenu d'une cellule

Bonjour,

J'ai une base de données qui me sert à initialiser des fiches d'informations dans un nouvel onglet à chaque fois que je lances ma macro.

Le souci est que lorsque j'enregistre la macro, le nom de l'onglet est pris en compte plutôt que la case et la feuille dans laquelle je suis allé chercher le nom, ce qui donne dans le VBA ceci :

Sheets.Add

Sheets("Feuil1").Select

Sheets("Feuil1").Name = "Entreprise1"

J'aimerais donc trouver une solution me permettant de remplacer le "Entreprise1" par une cellule dans laquelle je rentrerai le nom moi-même avant de lancer la macro et que je puisses initialiser l'onglet selon une cellule donnée de mon premier onglet.

La 2eme difficulté serait de pouvoir aller chercher des infos différentes dans mon onglet de base de donnée pour ensuite ramener ces données dans le ouvel onglet "Entreprise1" au lieu de devoir modifier ma macro comme cet exemple :

Sheets("Entreprise1").Select

J'aimerais bien que ça ne prenne en compte que la cellule que je remplirai au début avant de lancer ma macro pour que quel que soit le nom que je mettes dans la cellule, la macro puisse faire des allées et retours entre les feuilles... Avec quelque chose qui ressemblerait à ceci :

Sheets("BDD NE PAS TOUCHER").Select

Sheets(Sheets("CHOIX DE L ENTREPRISE"(A1)).Select

Sheets("BDD NE PAS TOUCHER").Select

Sheets(Sheets("CHOIX DE L ENTREPRISE"(A1)).Select

Sheets("BDD NE PAS TOUCHER").Select

Sheets(Sheets("CHOIX DE L ENTREPRISE"(A1)).Select

J'espère avoir été assez claire, sinon demandez moi...

Je peux éventuellement mettre en pièce jointe un exemple sans parties confidentielles à l'intérieur sur demande.

Cordialement

Simon VLIEGHE

Hello !

Eviter l'enregistreur de macro t'evitera de nombreux problème comme par éxemple le ".select" pour recopier des données

Je t'ai mis un fichier exemple sur lequel t'appuyer !

Bonne journée

ps: pour être rigoureux, il faudrait tester l'éxistence d'une feuille déjà nommée comme le contenu de la cellule pour éviter de retourner dans le VBE

593test.zip (8.04 Ko)

Merci pour ta réponse rapide Guitouille !

En effet, je suis nouveau sur Excel et je vais avoir besoin d'un peu de temps pour comprendre la mécanique de la VBA, d'où mon utilisation de l'enregistreur automatique de macro...

Je l'ai deja modifié car j'avais d'autres problèmes que j'ai réussi à résoudre moi-même mais j'avoue que le détail du nom de l'onglet et du changement d'onglet pour récuperer des données sur une plage et jouer au ping pong dans le but de remplir plusieur graphiques c'était pas simple...

J'ai plus ou moins compris ton bout de code mais je vais me pencher dessus pour arriver à un résultat potable =)

Merci à toi !

Cordialement

Pas de soucis,

si tu a des soucis à adapter le code à ta feuille, hésite pas.

(pour le test d'éxistence d'une feuille du même nom aussi !)

Salut,

Ben écoute, pour que tu ais un petit aperçu d'un débutant qui essaie de faire sa première macro sur une BDD de 15000 données, je te laisses voir le nombre de fois où je dois switcher vers un nouvel onglet dont le nom sera renseigné dans le tout premier onglet ...

Interdiction de rigoler ^^

P.S. : je ne te demandes pas de prendre de ton temps pour le faire mais c'est plutôt pour comprendre comment un novice peut vite perdre la tête dans ce foulli ...

Cordialement.

233macro-maj.txt (6.27 Ko)

En effet, l'enregistreur de macro transcrit en VBA TOUTES les manips que tu fait pendant l'enregistrement

si tu veux déjà y voir plus clair, commençont par virer les lignes inutiles :

=> toutes les lignes du style

ActiveWindow.SmallScroll Down:=24

correspondent au défilement de la page avec la molette de la sourie, tu peut toutes les enlever ^^

ensuite un exemple de ton code :

Sheets("Entreprise1").Select
    ActiveWindow.SmallScroll Down:=-99
    Range("B9").Select
    ActiveSheet.Paste
    Sheets("Feuil2").Select
    Range("I2:M2").Select
    Application.CutCopyMode = False
    Selection.Copy

le Sheets("Entreprise1").Select t'ouvre la feuille, mais en as-tu besoin pour la suite? (je m'explique plus bas )

le ActiveWindow.SmallScroll Down:=-99 correspond au défilement de la page (inutile pour le fonctionnement de la macro)

ensuite tu selectionne la cellule B9 pour y coller des données copiées précédement (D2:H2 si je ne me trompe pas), tu peut te passer des selections

Sheets("BDD NE PAS TOUCHER").Range("D2:H2").Copy
Sheets("Entreprise1").Range("B9").PasteSpecial Paste:=xlPasteValues

ce code te permet de copier seulement les valeurs (pas le format) de la plage D2:H2 et de les coller à partir de la cellule B9 de la feuille Entreprise1 sans toutes les lignes inutiles ^^

j'en arrive là et je sais même pas si j'ai été clair ou si ça va t'aider :s

m'enfin bon courage ! (si je peux te donner un conseil d'un débutant du vba 2014, utilise l'enregistreur de macro pour retrouver la syntaxe des fonctions / procédures plutot que de l'utiliser pour créer tes macros, ton code sera lisible et tu saura (ou presque) ce que fait réellement ta macro, oubli pas, pas de CTRL + Z avec ces joujou :p )

Bonjour,

J'ai ajouté une petite modification afin de ne pas avoir de message d'erreur si la feuil existe déjà

Sub créer_onglet()

If Sheets(1).Cells(3, 3).Value <> "" Then
Sheets.Add.Move After:=Sheets(Sheets.Count)
        ' Si onglet existant
        If Sheets(Sheets.Count).Name = Sheets(Sheets.Count).Name Then
        MsgBox ("Onglet déjà existant")
        Application.DisplayAlerts = False ' désactive message de confimation de supression de feuille
        Sheets(Sheets.Count).Delete
        Application.DisplayAlerts = True
        GoTo Fin
        End If
Sheets(Sheets.Count).Name = Sheets(1).Cells(3, 3).Value

Call transfert_données(Sheets(1).Cells(3, 3).Value)
Else
MsgBox ("Entrer un nom pour l'onglet à créer")
Fin:
End If
End Sub

Cdt

Harissa23

Voilà une aide forte Utile =) merci beaucoup à toi et je te dis à bientôt =)

Cordialement

Rechercher des sujets similaires à "macro creer onglet nomme contenu"