A voir également:
- [365] Macro ouvrir une feuille créée par une autre macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Comment ouvrir un fichier epub ? - Guide
- Ouvrir fichier .bin - Guide
- Macro logiciel - Télécharger - Organisation
5 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 oct. 2020 à 11:44
13 oct. 2020 à 11:44
Bonjour,
voici une méthode beaucoup plus simple qu'une multitude de bouton!
https://www.cjoint.com/c/JJnjRsYRWZQ
voici une méthode beaucoup plus simple qu'une multitude de bouton!
https://www.cjoint.com/c/JJnjRsYRWZQ
Wow ! Magnifique !
Je suis curieux de savoir comment tu as fait ce prodige ? Histoire que je puisse le reproduire sur mon fichier original ^^
Merci encore !
Je suis curieux de savoir comment tu as fait ce prodige ? Histoire que je puisse le reproduire sur mon fichier original ^^
Merci encore !
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
Josvin
13 oct. 2020 à 12:45
13 oct. 2020 à 12:45
C'est beaucoup plus compliqué. Il faut une macro pour chaque bouton, rechercher la ligne pour relié ce bouton au nom et à la date.
Si tu as une colonne de 50 noms tu vois le travail!
Là c'est simple tu cliques sur la ligne et tu as toutes tes infos.
Je ne peux pas faire plus
@+ Le Pivert
Si tu as une colonne de 50 noms tu vois le travail!
Là c'est simple tu cliques sur la ligne et tu as toutes tes infos.
Je ne peux pas faire plus
@+ Le Pivert
Hum... oui, en effet. Je m'incline dans ce cas, restons sur le double clic :-)
Du coup, comment puis-je faire pour l'implémenter à mon fichier (qui contient beaucoup plus de données, forcément) ? Car là où je savais créer des macros par le simple onglet "enregistrer une macro", je maitrise beaucoup moins l'écriture manuelle en VBA...
Du coup, comment puis-je faire pour l'implémenter à mon fichier (qui contient beaucoup plus de données, forcément) ? Car là où je savais créer des macros par le simple onglet "enregistrer une macro", je maitrise beaucoup moins l'écriture manuelle en VBA...
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
Modifié le 13 oct. 2020 à 12:57
Modifié le 13 oct. 2020 à 12:57
Voici le code avec les commentaires. Il suffit d'être attentif:
Bon courage, n'hésite pas si tu rencontres un problème
@+ Le Pivert
Option Explicit 'déclaration des variables Dim Ws As Worksheet Dim nom As String 'nom du client Dim ligne As Long Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not Intersect(Target, Range("E6:E12")) Is Nothing Then ' adapter la plage On Error Resume Next ligne = Target.Row 'ligne cliquée nom = Range("A" & ligne).Value 'nom du client creer ' crée le Formulaire au nom du client End If If Not Intersect(Target, Range("F6:F12")) Is Nothing Then ' adapter la plage On Error Resume Next If Target.Value = "" Then Exit Sub ligne = Target.Row 'ligne cliquée nom = Range("A" & ligne).Value 'nom du client Sheets(nom).Activate 'active la feuille au nom du client End If End Sub Private Sub creer() 'Boucle sur les feuilles du classeur. For Each Ws In ThisWorkbook.Worksheets If Ws.Name = nom Then 'même nom MsgBox "Une feuille existe dèjà à ce nom!", vbExclamation, "Ajout feuille" Exit Sub End If Next Ws 'copie feuille modèle Sheets("Formulaire").Copy After:=Sheets(Sheets.Count) 'ajoute en dernier 'renommer la feuille modèle(formulaire) avec le nouveau nom Sheets(Sheets.Count).Name = nom Sheets(nom).Range("C4").Value = nom 'mettre le nom du client dans le formulaire Sheets(nom).Range("F3").Value = Sheets("FLOWA").Range("D" & ligne).Value 'mettre la date dans le formulaire Sheets("FLOWA").Range("F" & ligne).Value = nom 'mettre le nom du client pour ouvrir sa feuille End Sub Sub supprimer() 'supprime toutes les feuilles sauf "FLOWA" et "Formulaire" 'Boucle sur les feuilles du classeur. For Each Ws In ThisWorkbook.Worksheets If Ws.Name <> "FLOWA" And Ws.Name <> "Formulaire" Then Application.DisplayAlerts = False 'evite message d'alerte Ws.Delete Application.DisplayAlerts = True End If Next Ws End Sub
Bon courage, n'hésite pas si tu rencontres un problème
@+ Le Pivert
Merci beaucoup pour les éclaircissements.
En étant attentif, j'arrive à peu près à comprendre. Si je comprends bien, il me suffira d'implémenter cette macro à chacune de mes feuilles (en faisant un copier coller pour chaque feuille), en adaptant simplement les plages de données, c'est bien ça ?
Je vais tenter et je reviendrai vers toi si jamais je coince quelque part :-)
En étant attentif, j'arrive à peu près à comprendre. Si je comprends bien, il me suffira d'implémenter cette macro à chacune de mes feuilles (en faisant un copier coller pour chaque feuille), en adaptant simplement les plages de données, c'est bien ça ?
Je vais tenter et je reviendrai vers toi si jamais je coince quelque part :-)
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 oct. 2020 à 13:11
13 oct. 2020 à 13:11
Si tu as plusieurs feuilles avec des données oui.
Il suffit de te mettre sur la feuille concernée et faire Alt F11 pour accéder à son module.
Mais si tu n'as qu'une seule feuille avec des données il suffit de faire comme le modèle envoyé
Je ne comprends pas que tu ais plusieurs feuilles, vu que sur le Formulaire il y a un bouton Retour qui te renvoi sur la feuille principale
Il suffit de te mettre sur la feuille concernée et faire Alt F11 pour accéder à son module.
Mais si tu n'as qu'une seule feuille avec des données il suffit de faire comme le modèle envoyé
Je ne comprends pas que tu ais plusieurs feuilles, vu que sur le Formulaire il y a un bouton Retour qui te renvoi sur la feuille principale
Josvin
>
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
13 oct. 2020 à 15:06
13 oct. 2020 à 15:06
Je bloque sur une petite chose :
Le fait que le formulaire créé par double clic prenne le nom de la colonne A de ma feuille me bloque. J'aimerais rajouter un petit qqch au bout, ne serait-ce qu'une lettre, comme "nom A".
Que faudrait-il que je mette à la place de "nom" dans :
Sheets(Sheets.Count).Name = nom
pour que ce soit le cas ?
Merci encore :-)
Le fait que le formulaire créé par double clic prenne le nom de la colonne A de ma feuille me bloque. J'aimerais rajouter un petit qqch au bout, ne serait-ce qu'une lettre, comme "nom A".
Que faudrait-il que je mette à la place de "nom" dans :
Sheets(Sheets.Count).Name = nom
pour que ce soit le cas ?
Merci encore :-)
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
Josvin
13 oct. 2020 à 15:10
13 oct. 2020 à 15:10
Sheets(Sheets.Count).Name = nom & "A" 'tout simplement
Josvin
>
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
Modifié le 13 oct. 2020 à 16:47
Modifié le 13 oct. 2020 à 16:47
Merci beaucoup, ça fonctionne ! J'ai réussi à implémenter cette macro à mon fichier :-)
Je suis dorénavant confronté à un autre problème (c'était à prévoir, débutant en VBA, désolé...) :
Comme je l'ai dit, j'ai plusieurs formulaires à créer de la même manière par feuille. J'ai donc copié collé la même macro en entier, sur la même page de l'éditeur puisque je reste sur la même feuille, en ajustant les variables (plages de données, noms des fomulaires) pour correspondre à mon nouveau formulaire.
Mais cela ne fonctionne pas, je pense que les deux macros (sur la même feuille, donc) font conflit entre elles. J'obtiens un message d'erreur :
"Erreur de compilation :
Nom ambigue detecté : Worksheet_BeforeDoubleClick"
J'imagine donc qu'il y a redite entre les deux macros. Mais je ne sais pas comment les imbriquer. Aurais-tu une idée ?
Je suis dorénavant confronté à un autre problème (c'était à prévoir, débutant en VBA, désolé...) :
Comme je l'ai dit, j'ai plusieurs formulaires à créer de la même manière par feuille. J'ai donc copié collé la même macro en entier, sur la même page de l'éditeur puisque je reste sur la même feuille, en ajustant les variables (plages de données, noms des fomulaires) pour correspondre à mon nouveau formulaire.
Mais cela ne fonctionne pas, je pense que les deux macros (sur la même feuille, donc) font conflit entre elles. J'obtiens un message d'erreur :
"Erreur de compilation :
Nom ambigue detecté : Worksheet_BeforeDoubleClick"
J'imagine donc qu'il y a redite entre les deux macros. Mais je ne sais pas comment les imbriquer. Aurais-tu une idée ?
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
>
Josvin
Modifié le 13 oct. 2020 à 17:12
Modifié le 13 oct. 2020 à 17:12
Donc toutes les donnée sont sur la même feuille. Tu as 3 formulaires, il faut donc répéter le code avec les nouvelles données dans Worksheet_BeforeDoubleClick. Comme je l'ai fait pour ouvrir une nouvelle feuille :
ou
Je dois donc reproduire le même schéma pour chacun de mes départements (et avec 3 formulaires différents pour chaque personne au lieu d'un... ^^)
je ne comprends toujours pas, si tu as 3 feuilles avec des données il faut te mettre sur chacune des feuilles et faire Alt F11 pour accéder au module de la feuille et là tu colles le code en adaptant les données
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) '1er formulaire If Not Intersect(Target, Range("E6:E12")) Is Nothing Then ' adapter la plage On Error Resume Next ligne = Target.Row 'ligne cliquée nom = Range("A" & ligne).Value 'nom du client creer ' crée le Formulaire au nom du client End If '2eme formulaire If Not Intersect(Target, Range("L6:L12")) Is Nothing Then ' adapter la plage On Error Resume Next ligne = Target.Row 'ligne cliquée nom = Range("J" & ligne).Value 'nom du client adapter la cellule creer ' crée le Formulaire au nom du client End If 'etc... pour ouvrir pareil
ou
Je dois donc reproduire le même schéma pour chacun de mes départements (et avec 3 formulaires différents pour chaque personne au lieu d'un... ^^)
je ne comprends toujours pas, si tu as 3 feuilles avec des données il faut te mettre sur chacune des feuilles et faire Alt F11 pour accéder au module de la feuille et là tu colles le code en adaptant les données
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai bien plusieurs feuilles, en effet.
Pour imager, mettons que j'ai une feuille par département géographique, et que l'exemple sur lequel tu as travaillé ne correspondait qu'à un seul département. Je dois donc reproduire le même schéma pour chacun de mes départements (et avec 3 formulaires différents pour chaque personne au lieu d'un... ^^)
Le bouton Retour étant présent pour quitter le formulaire et revenir à la plage de données du département correspondant.
Pour imager, mettons que j'ai une feuille par département géographique, et que l'exemple sur lequel tu as travaillé ne correspondait qu'à un seul département. Je dois donc reproduire le même schéma pour chacun de mes départements (et avec 3 formulaires différents pour chaque personne au lieu d'un... ^^)
Le bouton Retour étant présent pour quitter le formulaire et revenir à la plage de données du département correspondant.
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
13 oct. 2020 à 13:23
13 oct. 2020 à 13:23
OK il suffit d'être attentif aux noms des feuilles dans tes macros et la position des donnees dans les cellules