créer une nouvelle chaque fois que je remplie une cellule colonne A de le feuille1

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pascal21

XLDnaute Barbatruc
bonsoir le forum
je cherche le moyen de créer une base de données sur le matériel utilisé dans notre société
mon idée est de créer une feuille pour chaque matériel
donc je pensais me servir de la feuille1 colonneA pour inscrire la réference de chaque matériel
chaque nouvelle inscription dansl la colonne a doit créer une nouvelle feuille
comment réaliser ceci en vba
merci
 
Re : créer une nouvelle chaque fois que je remplie une cellule colonne A de le feuill

Bonjour à tous,
Bonjour pascal21,

Dans la feuille "base" du fichier de JP14, j'ai changé la procédure événementielle ci dessous par un "SelectionChange"

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

Par :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
https://www.excel-downloads.com/threads/creer-des-onglets-et-y-reporter-des-infos.113572/

Tu crées alors la feuille désirée sans doublon, reste maintenant à savoir ce que tu veux copier dans tes feuilles.

Klin89
 
Re : créer une nouvelle chaque fois que je remplie une cellule colonne A de le feuill

Bonsoir

Ci dessous un code pour créer une feuille en dernière position chaque fois que l'on écrit une valeur dans la colonne a.
On vérifie si la feuille n'existe pas.
Code:
Option Explicit
Dim flag As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)

If flag = True Then Exit Sub
Dim data1 As String
Dim cellule As Range
Dim Sh As Worksheet
Dim msg As String
Dim Style As String
Dim Title1 As String
flag = True
If Target.Count > 1 Then Exit Sub

Dim dl1 As Long ' dernière ligne
With Sheets(Target.Worksheet.Name)
dl1 = .Range("a65536").End(xlUp).Row

    If Not Intersect(Target, Range("a2:a" & dl1)) Is Nothing Then
        For Each Sh In Worksheets
            If Sh.Name = Target.Value Then
                Call MsgBox("La feuille existe existe déja", vbInformation, Application.Name)
                flag = False
                Exit Sub
            End If

        Next Sh
        ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
        ActiveSheet.Name = Target.Value
    End If
Sheets(Target.Worksheet.Name).Select
End With
flag = False
End Sub

A tester

JP

Je n'avais pas actualisé la page courante !
 
Dernière édition:
Re : créer une nouvelle chaque fois que je remplie une cellule colonne A de le feuill

Bonsoir à tous
Une autre proposition.
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, Columns(1)) Is Nothing And Not IsEmpty(Target.Cells(1, 1).Value) Then
      Application.ScreenUpdating = False
      ThisWorkbook.Sheets.Add after:=Me
      On Error GoTo nom_incorrect
      ActiveSheet.Name = CStr(Target.Cells(1, 1).Value)
      On Error GoTo 0
      Me.Activate
      Application.ScreenUpdating = True
   End If
Exit Sub
nom_incorrect:
   Application.DisplayAlerts = False
   ActiveSheet.Delete
   Application.DisplayAlerts = True
   Me.Activate
   MsgBox "Il existe déjà une feuille nommée " & """" & CStr(Target.Cells(1, 1).Value) & """" & _
      vbLf & "ou ce nom est incorrect."
End
End Sub[/B][/COLOR]
ROGER2327
#2062
 
Re : créer une nouvelle chaque fois que je remplie une cellule colonne A de le feuill

merci pour vos réponses je vais y jeter un oeil
je m'aperçois que ma demande est incomplète
il faudrais en fait que ça recopie une mise en page (un tableau)que je pourrais mettre en feuille 2
donc en clair à chaque nouvelle entrée en colonneA il faut que ça recopie la mise en page de la feuille2 sur les nouvelles feuilles crées
il s'agit d'une demande préliminaire, je n'ai pas encore travaillé sur la mise en page de mon futur classeur
 
Re : créer une nouvelle chaque fois que je remplie une cellule colonne A de le feuill

Re...
Version modifiée.
Mettez le nom d'une feuille n'importe où dans la colonne A de la feuille Feuil1 et validez.
Une copie de la feuille XXX (mettez le nom qui vous plaira) sera créée avec le nom que vous avez choisi.
(Si vous tentez de créer une feuille avec un nom déjà existant dans le classeur, un message vous signalera que ce n'est pas possible.)
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, Columns(1)) Is Nothing And Not IsEmpty(Target.Cells(1, 1).Value) Then
      Application.ScreenUpdating = False
      ThisWorkbook.Sheets("XXX").Copy After:=Me
      On Error GoTo nom_incorrect
      ActiveSheet.Name = CStr(Target.Cells(1, 1).Value)
      On Error GoTo 0
      Me.Activate
      Application.ScreenUpdating = True
   End If
Exit Sub
nom_incorrect:
   Application.DisplayAlerts = False
   ActiveSheet.Delete
   Application.DisplayAlerts = True
   Me.Activate
   MsgBox "Il existe déjà une feuille nommée " & """" & CStr(Target.Cells(1, 1).Value) & """" & _
      vbLf & "ou ce nom est incorrect."
End
End Sub[/B][/COLOR]
Ce code est à placer dans le module de la feuille Feuil1.​
ROGER2327
#2063
 
Re : créer une nouvelle chaque fois que je remplie une cellule colonne A de le feuill

bonjour à tous
merci roger et bravo malgré mes explications pas très claires tu as su déchiffrer ma demande
je vais avancer dans la construction de mon tableau et revenir pour d'autres questions,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
582
Retour