Duplication Onglets/Graphs dynamiques/Liens

Bonjour à tous,

Je fais appel à votre aide pour un fichier qui me donne du fil à retordre depuis quelques jours...

Après plusieurs remaniages du doc, seules les macros peuvent le faire fonctionner au vu de la quantité de données ...

Plusieurs problématiques :

- la création de multiples onglets selon un listing de produits (plus de 800). Chaque onglet est composé du nom du produit (qui a plusieurs caractères, nombres et "/" => :s), d'une même base de fiche, accompagné d'un graphique dynamique.

- première feuille comportant liens vers ces liens

Je vous joint ci-dessous la maquette de mon document, ce sera certainement plus clair :

Merci d'avance à toute personne qui prendra le temps de me lire,

Sbiclo

Bonjour

Les caractères / sont interdits dans les noms de Feuilles.

Pour tester, un exemple avec les 3 premières feuilles en remplaçant le caractère / par -

et en inscrivant le nom du fichier en B1

Code Module et Bouton associé

Sub Créer_feuilles()
Dim I As Byte
If Sheets.Count > 3 Then Exit Sub
'Pour créer toutes tes Feuilles d'un coup tu remplaces le 15 par 821
For I = 12 To 15
  Sheets("Produit").Copy After:=Sheets(Sheets.Count)
  Sheets(Sheets.Count).Name = "X1NOMIMROVIS2-" & " " & Format(I, "00")
Sheets(Sheets.Count).Range("B1") = ActiveSheet.Name
Next I
End Sub
8outil-forum.zip (61.33 Ko)

Merci Amadeus pour ta réponse,

Je viens d'essayer d'appliquer ta solution à mon document. Le nom des produits "X1NOMIMROVIS2-" je l'ai inventé. C'est pour montrer qu'on y trouve des lettres, des / et des nombres. Je vais remplacer tous les "/" par des tirets pas de soucis. L'attribution des titres aux onglets ne fonctionne plus.

Par contre, le nom du produit qui apparaît dans la cellule, c'est niquel !


Pour être plus claire, voici ci-dessous des exemples de format pour l'écritude des produits :

TIIPPZJJAX MMM 68II 70YYY DE

PPDGGGLNN OOO 388-PP 5MM 78XXXX GR

Merci d'avance

Depuis ce matin, je cherche mais je ne vois pas comment créer les onglets correspondant à mes longs noms de produits ...

Si quelqu'un a juste une idée ... Merci d'avance

Bonjour

J'ai réduit la colonne E pour tester, tu modifieras.

Sub Créer_feuilles()
Dim I As Integer
Application.ScreenUpdating = False
If Sheets.Count > 3 Then Exit Sub
For I = 2 To Range("E2", Range("E2").End(xlDown)).Rows.Count
Sheets("Produit").Activate
  ActiveSheet.Copy After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = Sheets("Outil").Range("E" & I)
Sheets(Sheets.Count).Range("B1") = ActiveSheet.Name
Next I
End Sub

Cordialement

9outil-forum-v2.zip (58.05 Ko)

Merci beaucoup Amadéus, ça ne fonctionne pas et je pense que c'est dû aux nombres de caractères qui dépassent 31.

Le problème ne peut pas être contourné ? Je ne sais pas si ça aide mais j'ai excel 2010

bonjour

ça ne fonctionne pas

dans mon exemple, ça fonctionne parfaitement

Pour ce sui est de dépasser les 31 caractères, je ne pense pas que cela soit possible.

cordialement

J'ai ressayé et en effet cela fonctionne. Merci Amadéus. J'ai modifié un peu la macro pour que l'onglet ait pour titre le numéro (au lieu du produit à plus de 31 caractères).

Maintenant il me manque les graphiques dynamiques que je dois créer pour qu'ils s'implémentent à chaque fois dans chaque onglet et les liens aussi !

Merci encore et si quelqu'un a des idées pour le reste... pour ma part, je replonge dans mes recherches

Bonjour

Sélectionner un onglet avec un double-Clic gauche

Code de feuille

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Sh As String
If Not Application.Intersect(Target, Range("E:E")) Is Nothing Then
     Sh = Target.Value
    Worksheets(Sh).Select
    ActiveSheet.Range("B1").Select
  End If

Pour tester, tu ouvres le fichier, tu cliques sur le Bouton pour éditer les feuilles dont les noms sont en colonne E

Cela fait, tu double-Cliques sur un des noms de Feuille

Cordialement

18outil-forum-v2.zip (60.88 Ko)

Bonjour à tous,

Merci Amadeus ça fonctionne très bien. Je vais l'appliquer à mon document.

"J'ai modifié un peu la macro pour que l'onglet ait pour titre le numéro (au lieu du produit à plus de 31 caractères). "

Hier j'avais réussi à faire en sorte que le nom des onglets corrspondent aux numéros de la colonne A dans l'onglet "Outil". Mon document ne s'est pas enregistré et j'ai perdu ma macro :s, impossible de retrouver ce que j'ai fait et pourtant je me souviens bien que ça avait été rapide. Je tente de procéder par logique surtout qu'hier j'avais bien réussi et là bug total ...

Sub Créer_feuilles()

Dim I As Integer

Application.ScreenUpdating = False

If Sheets.Count > 3 Then Exit Sub

For I = 2 To Range("E2", Range("E2").End(xlDown)).Rows.Count

Sheets("Produit").Activate

ActiveSheet.Copy After:=Sheets(Sheets.Count)

Sheets(Sheets.Count).Name = Sheets("Outil").Range("E" & I) => là j'ai essayé de mettre un A à la place du E, j'ai tenté avec Range ("E2").Value, etc etc mais en vain

Sheets(Sheets.Count).Range("B1") = ActiveSheet.Name => De même ici, pour que ma cellule contienne le produit, j'ai tenté plusieurs formules mais non...

Next I

End Sub

Merci d'avance...

C'est bon !!! j'y suis arrivée

Amadéus ta macro pour le double click du coup fonctionne très bien mais n'est plus adaptée ...

Comme mes noms d'onglets sont maintenant des numéros (je ne pouvais dépasser 31 caractères),

Est ce qu'il est possible de cliquer sur un produit dans l'onglet "Outil" et d'atteindre son onglet même si le nom de l'onglet n'est pas le nom du produit ? ('je ne sais pas si je suis claire :s)

Merci d'avance

Bonjour

Dans le Code de la Feuille Outil, tu remplaces

Sh = Target.Value

par

Sh = Target.Offset(0, 4).Value

Cordialement

Bonjour Amadéus,

Merci mais j'ai essayé et cela ne fonctionne pas

Une ligne se surligne.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim Sh As String

If Not Application.Intersect(Target, Range("E:E")) Is Nothing Then

Sh = Target.Offset(0, 4).Value

Worksheets(Sh).Select => Cette ligne se surligne

ActiveSheet.Range("B1").Select

End If

End Sub

Lorsque je clique sur un produit de l'onglet "Outil", ce message apparaît : Run-time error '9' : Subscript out of range

Mercii d'avance,

sbiclo

Est ce quelqu'un sait ce que signifie cette erreur ? :s

Autre petite question :

J'ai trouvé la macro qui va me permettre de mettre à jour mes TCD en nommant d'abord ma plage de données :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

ActiveSheet.PivotTables("Tableau croisé dynamiquex").PivotCache.Refresh

End Sub

Le souci c'est que j'ai des centaines d'onglets, n'y a t-il pas une macro me permettant de nommer tous mes tableaux "TCD1, TCD2, etc etc" ? et comment ajouter dans ma macro le fait de tous me les actualiser ? (parce que là je n'ai que pour un tableau donné).

J'espère avoir été claire :s

Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

Bonjour

Essaie en remplaçant

Dim Sh As String

par

Dim Sh As Variant

Cordialement

ça ne fonctionne toujours pas ...

Bonjour à tous,

J'ai aussi essayé avec Integer mais ça ne fonctionne pas non plus.

Si quelqu'un a une idée ? je ne vois pas l'erreur :s

Merci d'avance

Bonjour

Comme chez moi (Excel 2003) tout fonctionne, en String ou Variant, je ne peux t'en dire plus.

Cordialement

Bonjour Amadéus et le forum,

Tout d'abord merci encore pour ton aide.

Au final, j'ai trouvé une autre macro me permettant la duplication.

Nouveau souci :s : en lançant la macro pour la création des onglets, un message apparaît me disant qu'Excel n'a pas les ressources nécessaires. En effet j'ai ajouté un petit tableau et un graphique sur l'onglet à reproduire. Existe t-il une solution à ce genre de problème ?

Surtout que j'ai beaucoup bossé dessus ...

Merci d'avance,

sbiclo

Rechercher des sujets similaires à "duplication onglets graphs dynamiques liens"