Je voulais savoir s’il était possible, depuis un tableau de données Excel, de créer une nouvelle feuille en disposant ces données dans un masque prédéfini créer pour imprimer. Ceci pour éviter d’avoir à créer des centaines de feuilles manuellement.
J’ai un tableau avec plusieurs centaines de données. Je voudrai pourvoir imprimer les données d’une ligne, et qu’elles soient disposées automatiquement d’une autre façon dans une feuille prête pour impression.
Et j’aimerai pourvoir choisir uniquement la ligne qui m’intéresse à l’instant “t” pour l’impression. Donc pouvoir sélectionner la ligne voulue et générer la mise en forme pour cette ligne de données.
Je ne sais pas si je suis assez clair dans mon propos ?
J’ai mis un exemple complètement fantaisiste pour imager ce j’aimerai obtenir et savoir si c’est réalisable. Et si vous pouvez me dire comment, ça serait top.
Il suffit par double clic sur une des cellules de A à H de la feuille DONNEES pour que les valeurs se placent dans le masque d’impression
MACRO :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Ws As Worksheet, Wd As Worksheet
Dim ligne%, Dl%
Set Ws = Worksheets("Données") 'feuille source
Set Wd = Worksheets("Masque d'impression") 'feuille destination
Dl = Ws.Range("A" & Rows.Count).End(xlUp).Row
If Not Application.Intersect(Target, Ws.Range("A2:H" & Dl)) Is Nothing Then
ligne = Target.Row 'N° de la ligne sélectionnée
'Copie les données sur le maque d'impression dans les cellules concernées
Wd.Range("A1") = Ws.Cells(ligne, 1)
Wd.Range("C1") = Ws.Cells(ligne, 2)
Wd.Range("H1") = Ws.Cells(ligne, 3)
Wd.Range("E3") = Ws.Cells(ligne, 4)
Wd.Range("A27") = Ws.Cells(ligne, 4)
Wd.Range("A10") = Ws.Cells(ligne, 5)
Wd.Range("A3") = Ws.Cells(ligne, 6)
Wd.Range("B7") = Ws.Cells(ligne, 7)
Wd.Range("F7") = Ws.Cells(ligne, 8)
End If
End Sub
La macro marche très bien, encore merci. J’ai juste détecté un petit problème par rapport à mon tableau de données à cause des cases vides de certaines lignes.
Quand la macro est exécutée avec une 1ère ligne dont toutes les cases sont remplies et qu’ensuite j’enchaîne sur une 2ème ligne avec cases vides, certaines données de la 1ère ligne pleine restent et ne sont pas écrasées à cause des cases vides de la 2ème ligne.
Quand la macro est exécutée, est-il possible d’ajouter une RAZ automatique la feuille “masque d’impression” avant que les données ne soient insérées ? Mais uniquement les cases qui changent avec les valeurs de la feuille “Données”, pas la feuille entière.
Une dernière petite question, est-il possible de garder la mise en forme du contenu d’une case de la base de donnée quand elle est copiée dans le masque d’impression ?
Exemple inventé :
Dans la base : une case contient du texte souligné, en rouge et en gras.
J’aimerai que le contenu de cette case reste “souligné, en rouge et en gras” quand il est transféré dans le masque d’impression.
Sachant que chaque case de la base peut avoir un style différent (couleur différente, non gras, italique, etc. …) sinon j’aurai appliqué le style directement dans le masque d’impression.
Etant donné que le masque d’impression contient des cellules fusionnées (A1 & B1) par exemple, il récupèrera le format, mais ôtera la fusion, et la mise en forme d’origine
Là actuellement, le contenu d’une case de la base de données est copiée par exemple dans un ensemble de cellules fusionnées du masque d’impression, elles restent fusionnées, mais si la police est en rouge et gras, ça ne suit pas. La macro copie le contenu sans la mise en forme d’origine.
Donc tu veux dire que ce n’est pas possible ? Ou uniquement pour sur des cellules qui ne seraient pas fusionnées ?
Si tu veux récupérer le format de police, taille couleur etc d’une cellule, tu récupéreras sur une seule cellule ou plus suivant la cellule source
mais tu ne pourras par garder la taille de la police destination, où alors, il faut faire tout un codage pour le mettre comme tu le désires
Après il faudait un exemple des données “concrètes” à placer, car pour mettre en DISPOSION un simple AVEC il ne faut pas 15 lignes, tout comme les conditions,
Pensez simplement que la personne qui peut vousdonner un coup de pouce, n’est pas dans votre t^te et que s’il n’a pas toutes les données en main, il ne fera rien de ce que vous désirez, et moi de mon côté, je n’aime pas revenir 50 fois sur un sujet qui aurait pu être exploité dés le départ avec de bonnes infos.
Oui c’est vrai, je comprend. J’aurai dû mieux affiner ma demande. Encore un grand merci pour ton aide, c’est génial ce que tu as fait et ça répond parfaitement à mon attente.
J’ai ajouté un exemple pour imager mon propos mais je pense que c’est trop compliqué à mettre en œuvre…