J'avais trouvé une dixcussion qui aurait pu repondre à ma question mais le lien vers la démo ne fonctionne plus Lien supprimé suite ce fil de discussion ICI.
J'espère être assez clair...
J'ai crée un USF avec un multipages à 3 onglets qui reprend les données par lignes d'un tableau et qui me met les données correspondantes après selection d'un nom dans un combobox dans des textbox sur ce multipage.
Jusque là pas de problème.
Je souhaiterai faire une impression de ces données sur une page récapitulative en ayant défini au préalable la mise en page.
Pas répondu à ton post plus tôt car je ne l'avais pas vu!
Concernant ton fichier, si je comprend bien, tu as tes données dans une BD (base de donnée), par le biais de l'USF, l'utilisateur va choisir la fiche qui l'intéresse, et tu souhaiterais qu'il puisse l'imprimer?
Le plus facile à première vue :
-> rajouter à ton fichier une feuille (que tu masqueras), dans laquelle tu créera ta fiche (vierge) comme tu souhaiterais qu'elle s'édite, avec la mise en page et tout et tout!!!
-> rajouter sur ton USF un bouton "imprimer"
Lorsque l'utilisateur cliquera sur ce bouton, ta macro (à créer) devra :
-> insérer dans ta fameuse nouvelle feuille les données contenu dans ton USF
-> imprimer cette feuille
-> remettre à blanc cette feuille : effacer que les zones où s'inscrivent les données.
(car si tu demande à ta macro de créer ta fiche en totalité et à chaque fois, puis l'effacer totalement, ta macro sera longue à faire, mais également à s'exécuter)
Si besoin d'aide ou plus de détails, n'hésite pas!
For ligne = 5 To 8
[COLOR="Blue"]Combobox1[/COLOR].AddItem Sheets("feuil1").cells(Ligne, 3)
Next ligne
Pour remplir ta feuille "Fiche à éditer", il te suffit de faire ainsi :
Code:
Sheets("Fiche à éditer").Range("Z1") = [COLOR="Blue"]TextBox1[/COLOR]
Code:
Sheets("Fiche à éditer").Range("G8") = [COLOR="Blue"]Combobox1[/COLOR]
En sachant que les noms écrit en bleu sont les noms de tes TextBox et Combobox (information figurant sur la ligne (name) des propriétés de tes TextBox, Combobox, ...)
Pour l'affichage des valeurs des TexBox et ComboBox dans ma feuille cachée c'est ok.
Mais une ligne de code pour chaque valeur telle (exemple pour 2 TextBox)
Sheets("Impression Resultat").Range("e31") = TextBoxCA
Sheets("Impression Resultat").Range("g31") = TextBoxTC
... me paraît lourd
j'en ai 18 ne peut-elle se simplifier?
Par contre pour l'impression j'avais mis :
Sheets("Impression Resultat").PrintOut copies:=1, collate:=True
et pour l'effacement de mes cellules :
Sheets("Impression Resultat").Select
Range("A4,E4,A9,C9,E9,G9,A12,C12,E12,G12,A17,C17,E17,G17,A20,C20,E20,G20"). _
Select
Selection.ClearContents
j'ai un probléme.
Cela ne vient-il pas du fait que la feuille est cachée ?
Pour le 18 Textbox dommage qu'il n'y ait pas plus simple.
Sinon comment peut-on faire, pour que lors du lancement de l'impression l'on puisse avoir le choix de l'imprimante et non pas obligatoirement celle par défaut ?
Mais une ligne de code pour chaque valeur telle (exemple pour 2 TextBox)
Sheets("Impression Resultat").Range("e31") = TextBoxCA
Sheets("Impression Resultat").Range("g31") = TextBoxTC
... me paraît lourd
j'en ai 18 ne peut-elle se simplifier?
Et que tu doivent coller les informations dans les cellules (par exemple) A1, C1, E1, G1, ... (c'est à dire toujours sur la même ligne et une colonne sur deux)
Ce qui te donnerais le code suivant :
Code:
Colonne = 1
For i = 1 To 18
Sheets("Impression Resultat").Cells(1,Colonne) = Controls("TextBox" & i).Value
Colonne = Colonne + 2
Next i
Bien sûr tu peux adapter cela comme tu veux! Par exemple écrire sur A1, B1, C1, D1, ... (toujours sur la même ligne et sur des colonnes mitoyenne), ce qui te donnerais :
Code:
Colonne = 1
For i = 1 To 18
Sheets("Impression Resultat").Cells(1,Colonne) = Controls("TextBox" & i).Value
Colonne = Colonne + [COLOR="Blue"][B]1[/B][/COLOR]
Next i
Après... comme tu as pu le constater, tout dépend du nom de tes TexBox et de la façon dont tu as ordonnées tes données sur ta feuille "impression résultat".
Autre chose,si le résultat devrait être sur des lignes différentes 4 par 4
exemple:
1ère ligne TextBoxChiffre1 TextBoxChiffre2 TextBoxChiffre3 TextBoxChiffre4
2ème ligne TextBoxChiffre5 TextBoxChiffre6 TextBoxChiffre7 TextBoxChiffre8
etc...
et la dernière ligne TextBoxChiffre17 TextBoxChiffre18
Il s'agit d'une faute d'inattention!!! En effet il fallait lire :
Code:
Colonne = 1
For i = 1 To 18
Sheets("Impression Resultat").Cells(1,Colonne) = Controls("[COLOR="Blue"]TextBox[B]Chiffre[/B][/COLOR]" & i).Value
Colonne = Colonne + 2
Next i
Idem pour le second exemple.
brutor2 à dit:
Autre chose,si le résultat devrait être sur des lignes différentes 4 par 4
exemple:
1ère ligne TextBoxChiffre1 TextBoxChiffre2 TextBoxChiffre3 TextBoxChiffre4
2ème ligne TextBoxChiffre5 TextBoxChiffre6 TextBoxChiffre7 TextBoxChiffre8
etc...
et la dernière ligne TextBoxChiffre17 TextBoxChiffre18
Ligne = 1
For i = 1 To 18
For Colonne = 1 To 4
Sheets("Impression Resultat").Cells(Ligne, Colonne) = Controls("TextBoxChiffre" & i).Value
Next Colonne
Ligne = Ligne + 1
Next i
N'ayant pu le tester... mais normalement c'est ok!
A tout hasard, avez vous pensé également à visiter le Musée du Forum sur la FAQ ?
On y a remis à jour les liens des merveilleuses démos de Thierry et peut être celle que vous cherchiez s'y trouve t'elle : https://www.excel-downloads.com/threads/musee-du-forum.3326/... Sur le dernier post de David, on y trouve : Lien supprimé...
Et d'autres... A fouiller donc de toute urgence !!!
Bonsoir Excel-lent, Bonsoir Brigitte,
Bonsoir le forum,
Merci de vos précieux conseils, Je vais m'empresser d'étudier toutes ces informations. un lien très utile
Je suis sur qu'elles vont me permettre de progresser et de comprendre mieux la réflexion à avoir pour écrire un code clair et efficace dans mes recherches.
Je reviendrais vers vous pour obtenir les explications nécessaires à leur compréhension si besoin.
Je vais tester ta solution Excel-lent et je ne doute pas qu'elle soit celle que je cherche.