![]() |
|
Forum
|
|
|
#1 (permalink) |
|
Guest
Messages: n/a
|
Bonjour à tous
J'ai une base sous excel et je souhaiterais mettre les infos de chaque ligne dans un formulaire sur un nouvelle feuille ma base: nom n°adhérent voiture maison bateau toto 12A oui non oui titi 11B non non non tete 54F oui oui oui mon formulaire dans une nouvelle feuille renommeé "nom - n°adherent": nom: toto n°adherent: 11B voiture: oui maison: non bateau: oui ...etc Il faudrait que ce soit automatique : un bouton à cliquer et tous les formulaires sont crées à la suite... Si vous aviez des pistes (assez précises, je suis un gros nullos...) Je vous remercie |
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
Guest
Messages: n/a
|
Bonjour,
faire cette manipulation n'est pas très compliqué, ce qui l'est plus, c'est la mise en forme derrière... Un bout de solution (il est nécessaire au préalable d'avoir nommé la plage de cellules contenant tous les NOMS en Liste_Noms) Sub Create_Formulaires Dim vcell as object Dim StrNom as string Dim StrNum as string Dim StrVoiture as string Dim StrMaison as string Dim StrBateau as string 'pour chaque personne enregistrée For each vcell in range('Liste_Noms") 's'il y a un nom If vcell.value<>"" then 'on prend les différentes données de la ligne (colonne par colonne) StrNom=vcell.value '''le nom de la personne StrNum=vcell.offset(0,1).value '''son numéro adhérent StrVoiture =vcell.offset(0,2).value '''voiture Oui/Non StrMaison =vcell.offset(0,3).value '''maison Oui/Non StrBateau =vcell.offset(0,4).value '''bateau Oui/Non 'on ajoute une nouvelle feuille Sheets.Add 'on renomme la feuille activesheet.name= StrNom & " - " & StrNum 'on met les intitulés Range("A1").value="Nom :" Range("A2").value="N° adhérent" Range("A4").value="Voiture ?" Range("A5").value="Maison ?" Range("A6").value="Bateau ?" 'et les valeurs ! Range("B1").value=StrNom Range("B2").value=StrNum Range("B4").value=StrVoiture Range("B5").value=StrMaison Range("B6").value=StrBateau endif next Vcell End Sub J'espère avoir pu répondre en partie au problème ! Il ne reste plus qu'à insérer un bouton et y affecter cette macro sur la feuille comportant les noms. Je reste à disposition pour toute information supplémentaire... Bon courage !!! Clément "S'il n'y a pas de solution, c'est qu'il n'y a pas de problème." |
|
|
#3 (permalink) |
|
Guest
Messages: n/a
|
Merci pour cette première réponse !!!
2 choses de +: -j'ai un petit souci avec "For each vcell in range('Liste_Noms")": s'affiche soit en jaune, soit en rouge...(ça dépends des " ' () ) -j'ai déjà un formulaire de prêt: ->il faut donc que je spécifie pour chaque colonne l'emplacement dans le formulaire ??? |
|
|
#4 (permalink) |
|
Guest
Messages: n/a
|
Re,
oups, la synthaxe.... Quand on ne tape pas sous VBA, on ne voit pas le résultat ! Lire For each vcell in range("Liste_Noms") et non... For each vcell in range('Liste_Noms") --> guillemets à utiliser Si il y a un formulaire de prêt (appelons la feuille 'Formul' pour l'exemple): 1- Nommer les cellules cibles (ex : 'Nom','Adhérent'...) 2- Changer tout le code comme suit : Sub Create_Formulaires Dim vcell as object Dim StrNom as string Dim StrNum as string Dim StrVoiture as string Dim StrMaison as string Dim StrBateau as string Dim IntNbfeuilles as integer 'pour chaque personne enregistrée For each vcell in range('Liste_Noms") 's'il y a un nom If vcell.value<>"" then 'on prend les différentes données de la ligne (colonne par colonne) StrNom=vcell.value '''le nom de la personne StrNum=vcell.offset(0,1).value '''son numéro adhérent StrVoiture =vcell.offset(0,2).value '''voiture Oui/Non StrMaison =vcell.offset(0,3).value '''maison Oui/Non StrBateau =vcell.offset(0,4).value '''bateau Oui/Non 'on active le formulaire Sheets("Form").Select IntNbfeuilles=thisworkbook.worksheets.count 'on la copie à la fin du classeur Sheets("Form").Copy After:=Sheets(IntNbfeuilles) 'on renomme la feuille activesheet.name= StrNom & " - " & StrNum 'on met les intitulés 'et les valeurs ! Range("Nom").value=StrNom Range("Adherent").value=StrNum Range("A_Voiture").value=StrVoiture Range("A_Maison").value=StrMaison Range("A_Bateau").value=StrBateau endif next Vcell End Sub 'on sélectionne le formulaire existant Sheets("Form").Select 'on renomme la feuille activesheet.name= StrNom & " - " & StrNum 'on met les intitulés Range("A1").value="Nom :" Range("A2").value="N° adhérent" Range("A4").value="Voiture ?" Range("A5").value="Maison ?" Range("A6").value="Bateau ?" 'et les valeurs ! Range("B1").value=StrNom Range("B2").value=StrNum Range("B4").value=StrVoiture Range("B5").value=StrMaison Range("B6").value=StrBateau endif next Vcell End Sub *-------------------------------------* Bonne continuation !!! Clément "S'il n'y a pas de solution, c'est qu'il n'y a pas de problème." |
|
|
#5 (permalink) |
|
Guest
Messages: n/a
|
Problème de copier - coller :
- bien lire Sheets("Formul") et non "Form" - bien arrêter la reprise du code au premier End Sub... - Lire For each vcell in range("Liste_Noms") --> même erreur Désolé... :0( Clément |
|
|
#6 (permalink) |
|
Guest
Messages: n/a
|
je regarde tout ça et je reviens vers toi si j'ai des soucis...
vu la facilité avec laquelle tu me réponds, il me viens d'autres idées pour améliorer mon petit fichier mais chaque chose en son temps... Merci à toi pour ton aide !!!! |
|
|
#7 (permalink) |
|
Guest
Messages: n/a
|
Salut à tous
Ca y est !!! J'ai réussi à faire ce que je voulais et j'ai meme rajouté d'autres petites choses à l'interieur Merci beaucoup Clément, tes lignes de code m'ont beaucoup aidé... Mais il me vient une autre idée: sur mon formulaire, en fonction des réponses données (oui,non,...), il y a un système de notation avec un total en fin de formulaire. Je souhaiterais maintenant récupérer dans un fichier tous les totaux de toutes les feuilles créées afin d'avoir une vue globale. merci |
| ANNONCES | |
| Liens sociaux |
| Outils de la discussion | |
|
|