Ajout de feuille

Fermé
Suekko-pasukaru Messages postés 5 Date d'inscription samedi 26 août 2017 Statut Membre Dernière intervention 1 septembre 2017 - Modifié le 26 août 2017 à 17:43
Suekko-pasukaru Messages postés 5 Date d'inscription samedi 26 août 2017 Statut Membre Dernière intervention 1 septembre 2017 - 1 sept. 2017 à 22:16
Bonjour, je souhaiterais, dans un tableau remplir une ligne et dès que j'ai saisie la première cellule, qu'une nouvelle ligne s'incrémente en dessous dans le tableau et créée une nouvelle feuille portant le nom de la valeur de la cellule. Ex:

Tableau
Noms date de création profil compte etc
toto 06-déc Bon ccl

Feuille1 + feuilles existante à la création du fichier

Tableau
Noms date de création profil compte etc
toto 06-déc Bon ccl
dédé 28-août moyen CP

toto dédé + feuille ajoutées après saisies dans le tableau

Voilà, mes notions remontent à 25 années derrière moi en Qbasic. Pour dire le retard mais ça m'aide beaucoup dans excel, alors si une âme charitable veuille bien m'ouvrir les voies du savoir, je serais preneur. Merci d'avance pour vos conseils.

nota: je visualise comment fonctionne la prog sous VBA car elle est identique en procédure, il n'y a que le langage qui diffère et qui me bloque.

à oui, important, j'utilise office 2011 pour Mac

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 690
26 août 2017 à 22:41
Bonjour,

Un petit exemple en stock depuis des ans qui doit correspondre à ton projet

https://www.cjoint.com/c/GHAuMOpTU1l

Si cela peut ouvrir les voies du savoir c'est avec plaisir,
par contre ce n'est pas testé sur mac.
1
Suekko-pasukaru Messages postés 5 Date d'inscription samedi 26 août 2017 Statut Membre Dernière intervention 1 septembre 2017
27 août 2017 à 14:29
Bonjour, ça fait toujours plaisir de voir qu'il y a des gens qui maitrisent le sujet et qui s'expliquent en toute simplicité. Rien de mieux qu'un bon exemple. Je l'ai essayé et il crée bien une nouvelle feuille. Je vais essayer de l'adapter à mon masque dans la semaine et je te rend compte du résultat. Si par "de simples formules je peu obtenir le même résultat" alors pas besoin de passer par des déclarations de variables$ ni de boucles if-then-else - end. Merci encore de votre réactivité. Je me remet à la prog et c'est super intéressant.
0
Suekko-pasukaru Messages postés 5 Date d'inscription samedi 26 août 2017 Statut Membre Dernière intervention 1 septembre 2017
27 août 2017 à 14:37
J'ai voulu monter à mon épouse l'efficacité de la formule, très bien. J'ai supprimé le nom dans la liste mais la page correspondante au nom est resté. J'ai supprimé la feuille avec un clic droit sur l'onglet, elle se supprime mais le nom correspondant reste dans le tableau. Aurais-tu une formule plus complète s'il te plait afin de définir si la feuille existe pour ne pas la réer à nouveau et pallier aux petits inconvénients cités plus haut. Merci encore pour ta réponse même négative.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 690
27 août 2017 à 14:43
Bonjour,

Si par "de simples formules je peu obtenir le même résultat"
Cela me parait bien chimérique car même sur mac, je ne pense pas que tu trouves une formule qui arrive à créer une feuille ! ;-)
Dans l'exemple les feuilles crées sont insérées de façon triée pour une recherche plus agréable : je ne sais pas si tu l'avais noté.

Je me remet à la prog et c'est super intéressant.
Bien sûr que cela est intéressant, surtout pour ceux qui ne sont pas rebutés par l'exercice de création car cela en est un véritablement.

Bonne continuation.
0
Suekko-pasukaru Messages postés 5 Date d'inscription samedi 26 août 2017 Statut Membre Dernière intervention 1 septembre 2017
27 août 2017 à 14:49
J'ai bien noté le classement des feuille et je t'en remercie je vais me mettre au travail mais d'après les forum j'ai cru comprendre qu'il existe des boucle en VBA pour ça. Le seul gros problème c'est qu'il faut que je me forme à nouveau avec les termes de "sub" mais j'apprécie baucoup l'aide que tu m'as fournis car ça me permet de commencer.

bonne journée à toi, je te tiendrai au courant de l'avancement.
0
Suekko-pasukaru Messages postés 5 Date d'inscription samedi 26 août 2017 Statut Membre Dernière intervention 1 septembre 2017
1 sept. 2017 à 22:16
Bonjour, je suis arrivé via une boucle de test pour 5 feuilles pour étudier et j'ai obtenu un bon résultat. Seulement maintenant il faut que la feuille se crée en saisissant une donnée dans un tableau et que le nom de la feuille soit celui de la cellule désignée. Voici ma boucle d'essai:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

' Insertion_de_feuille_automatique
' Petit essai de boucle pour contrôler la faisabilité

Dim NbFC As Integer

For i% = 1 To 5


Sheets(4).Copy after:=Sheets(4) ' copie de la feuille 4 après la feuille 4

NbFC = NbFC + 1
Sheets(5).Name = "FC" & Str(NbFC)

Next

End Sub

le résultat est probant sauf que cela se crée,( et c'est normal) dès que je clic sur la feuille. Pour mes autres tests complémentaires j'apostrophe les lignes exécutables. Pourrais-tu me mettre des remarques derrière les lignes de ton exemple? J'en comprend le fonctionnement mais les termes m'échappent un peu. J'ai passé beaucoup de temps sur les forums et pour trouver des explications sur les termes employés..... tu navigue.... surtout que pour un exemple s'apparentant au mien il y a plusieurs solutions.

Private Sub Worksheet_Change(ByVal sel As Range) ' ça Ok
If sel.CountLarge > 1 Then Exit Sub 'sel.CountLarge?
If Not Intersect(sel, Columns(1)) Is Nothing Then ?????
If sel = "" Then Exit Sub ' sel ???
Dim feu As Integer, mxn As String, ndf As String ' ok
ndf = ActiveSheet.Name ' ok

For feu = 1 To Sheets.Count 'ok
If Sheets(feu).Name = sel.Value Then Exit Sub ' si nom de la feuille(1) = sel.value???
If InStr("modèle," & ndf & ",", Sheets(feu).Name & ",") = 0 Then
If sel.Value < Sheets(feu).Name Then
mxn = Sheets(feu).Name: Exit For
End If
End If
Next feu


If feu > Sheets.Count Then
Sheets("modèle").Copy after:=Worksheets(Sheets.Count)
ElseIf mxn <> "" Then
Sheets("Modèle").Copy before:=Worksheets(mxn)
End If

If ActiveSheet.Name <> ndf Then
ActiveSheet.Name = sel.Value
End If
Sheets(ndf).Activate
End If
End Sub

comme je te 'ai précisé, le fonctionnement est resté mais les termes sont en cours d'apprentissage. Je suis désolé... ton aide m'est d'un grand secours. Merci
0