Ajout d'un onglet avec le nom d'une cellule d'un autre ongle

Salut tout le monde!

J'ai un onglet appelé wsRecap (de type Worksheet) qui contient des centaines de lignes de valeurs (nombres ou autres). Je veux qu'à chaque fois qu'une cellule de la colonne B contient une nouvelle valeur, un onglet se crée et prenne le nom de la cellule en question.

J'ai donc fait le code ci-dessous:

Private Sub CommandButton1_Click()
Dim wsRecap As Worksheet
I = 2
Do
    If Not IsWorksheet(wsRecap.Cells("B" & I)) Then 'si un onglet pour le fournisseur n'existe pas encore
        Set NomOnglet = Sheets.Add(After:=Sheets(Sheets.Count)) 'ajout d'un onglet après tous les autres onglets
        NomOnglet.Name = wsRecap.Cells("B" & I).Value 'le nom de l'onglet prend la valeur de la cellule fournisseur
        wsRecap.Rows("I:I").Copy NomOnglet.Rows(2) 'ligne de la commande à rajouter
    Else 'si un onglet pour le fournisseur existe déjà
        NomOnglet.Activate
        If 
           'BLABLABLA
        End If
    End If
Loop While Not IsEmpty(wsRecap.Cells("B" & I))
End Sub

Public Function IsWorksheet(strName As String) As Boolean
   Dim objWorksheet As Worksheet
   IsWorksheet = False
   For Each objWorksheet In ThisWorkbook.Sheets
      If objWorksheet.Name = strName Then
         IsWorksheet = True
         Exit Function
      End If
   Next
End Function

Malheureusement ça ne marche pas. Qu'en pensez-vous?

Je vous remercie par avance bien évidemment !

Klaradoc

bonjour,

essaie ceci

Dim wsRecap As Worksheet
set wsrecap=sheets("wsrecap")
I = 2

et

wsRecap.Rows(i).Copy NomOnglet.Rows(2)

Tout d'abord merci de ta réponse.

Le problème est que j'ai vraiment besoin que l'onglet ne s'appelle pas wsrecap mais prenne bien le nom de la cellule voulue...

klaradoc.ecn a écrit :

Tout d'abord merci de ta réponse.

Le problème est que j'ai vraiment besoin que l'onglet ne s'appelle pas wsrecap mais prenne bien le nom de la cellule voulue...

comme s'appelle l'onglet dans lequel se trouve la (...) cellule voulue (...) ?

c'est ce nom-là que tu dois mettre dans l'instruction

set wsrecap=sheets("nom de cet onglet")

Mais je ne sais pas et je ne veux pas savoir. Je veux que ce soit automatique: la valeur (c'est un nom) de la cellule devient le nom de l'onglet... ça n'est pas possible tu penses?

Cher amie pas besoin de t'énerver, manifestement on ne se comprend pas.

Tu vas bien chercher le nom des onglets à créer en colonne B d'un onglet ? quel est le nom de cet onglet qui contient cette colonne B ?

Je répéte, c'est ce nom que tu dois mettre dans l'instruction. Il n'est pas possible de créer un onglet à partir d'une cellule sur ce même onglet à créer ...

sinon mets-nous ton fichier.

Je suis vraiment désolée je n'étais pas du tout énervée et ce n'est pas l'impression non plus que je voulais donner!

Voilà le fichier que j'ai. J'aimerais qu'il y ait un onglet par fournisseur...

Mais apparemment tu dis que c'est pas possible de copier la valeur de la cellule B2 par exemple et de la copier dans le nom de l'onglet?

En tout cas merci pour ton aide!

24export.xlsm (96.67 Ko)

bonjour,

Mais apparemment tu dis que c'est pas possible de copier la valeur de la cellule B2 par exemple et de la copier dans le nom de l'onglet?

Je n'ai jamais dis cela.

voici le code corrigé, le nom de l'onglet que je te demandais est "export" dans l'exemple que tu as donné. c'est bien cet onglet qui contient la colonne B où se trouvent les noms des onglets à créer.

Private Sub CommandButton1_Click()
Dim wsrecap As Worksheet
Set wsrecap = Worksheets("export") ' wsrecap contient la référence de la feuille contenant les onglets à créer.
i = 2
Do
    If Not IsWorksheet(wsrecap.Range("B" & i)) Then 'si un onglet pour le fournisseur n'existe pas encore
       Set nomonglet = Worksheets.Add(After:=Worksheets(Worksheets.Count)) 'ajout d'un onglet après tous les autres onglets
       nomonglet.Name = wsrecap.Range("B" & i).Value 'le nom de l'onglet prend la valeur de la cellule fournisseur
       wsrecap.Rows(1).Copy nomonglet.Rows(1) 'copie ligne titre
       wsrecap.Rows(i).Copy nomonglet.Rows(2) 'ligne de la commande à rajouter
   Else 'si un onglet pour le fournisseur existe déjà
    Set nomonglet = Worksheets(wsrecap.Range("B" & i).Value)
       nomonglet.Activate
       dl = nomonglet.Cells(Rows.Count, "B").End(xlUp).Row + 1 ' première ligne non utilisée sur l'onglet fournisseur
       wsrecap.Rows(i).Copy nomonglet.Rows(dl) 'ligne de la commande à rajouter
        If
           'BLABLABLA
       End If
    End If
Loop While Not IsEmpty(wsrecap.Range("B" & i))
End Sub

Public Function IsWorksheet(strName As String) As Boolean
   Dim objWorksheet As Worksheet
   IsWorksheet = False
   For Each objWorksheet In ThisWorkbook.Worksheets
      If objWorksheet.Name = strName Then
         IsWorksheet = True
         Exit Function
      End If
   Next
End Function

Super. Je te remercie pour ton aide. J'ai eu du mal à me faire comprendre désolée!

Bonne continuation.

Klaradoc

Rechercher des sujets similaires à "ajout onglet nom ongle"