Miser en forme + bordure

warrio

XLDnaute Nouveau
Bonjour a tous,
Amis "forum'eur" j'ai besoin de votre aide pour un code basique mais qui me fait galéré depuis 2 jours,.
j'ai une fonction qui me permet de copier et coller des lignes d'un tableau a l'autre.
Sur mon 1er tableau ,quand je double clique sur une ligne il me copie les valeurs dans un 2nd tableau dans un onglet spécifique, jusque la rien de spécial et ca fonctionne.
Ce que je n'arrive pas a faire c'est créer une bordure autour de la ligne qui vient d'être créer et de faire une mise un forme spéciale.
actuellement il me copie la ligne du 1er tableau avec sa mise en forme (police, couleur...) et sa bordure.

voila un tableau qui vous expliquera dans le détail.

merci de votre aide.
bonne continuation
 

Pièces jointes

  • essai-warrio.zip
    27.5 KB · Affichages: 46

Modeste

XLDnaute Barbatruc
Re : Miser en forme + bordure

Salut warrio,

Je ne voudrais imposer à personne la lourde tâche d'assurer le "service après-vente" d'un code que j'ai "commis" ... Ceci dit, tu aurais pu poursuivre la discussion dans le même fil.
Je ne sais pas clairement ce que tu veux faire, cette fois, mais voici une première proposition: le code ci-dessous fait un collage spécial de la plage source, en ne recopiant que les valeurs et formats des nombres. De cette manière, la couleur de remplissage n'est pas collée et tu conserves la mise en forme (bordures et autres) de la plage cible
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim inv As Workbook '[COLOR="Red"]et pas inventaire, comme noté précédemment ![/COLOR]
Dim PdT As String
Dim maPlage As Range, Cible As Range
Set inv = Workbooks("inventaire.xls")
If Not Application.Intersect(Target, ActiveSheet.Range("A:A")) Is Nothing Then
    For i = 5 To 14
        PdT = ActiveSheet.Cells(2, i)
        If ActiveSheet.Cells(Target.Row, i) <> "" Then
            Set Cible = inv.Sheets(PdT).Range("A" & inv.Sheets(PdT).Range("A65000").End(xlUp).Row + 1)
            Set maPlage = Application.Union(ActiveSheet.Range(Cells(Target.Row, 1), Cells(Target.Row, 4)), ActiveSheet.Cells(Target.Row, i))
            maPlage.Copy
            Cible.PasteSpecial Paste:=xlPasteValuesAndNumberFormats
        End If
    Next i
    ActiveSheet.Range(Cells(Target.Row, 1), Cells(Target.Row, 14)).Interior.ColorIndex = 4
End If
Cancel = True
End Sub
J'en ai profité pour corriger une (grossière) erreur (en rouge, à la ligne 2), erreur dont j'assume pleinement la paternité :eek:
 

warrio

XLDnaute Nouveau
Re : Miser en forme + bordure

Merci Modeste pour ton aide,

Bonjour à tous,


J’ai un problème de mise en forme, j'ai une macro qui fait du copier coller..

- lorsque ma ligne est copier dans le second tableau je souhaiterais lui donné une mise en forme (police, couleur...) mais je n'ai pas réussi, la mise en forme est celle du fichier source.
- Lorsque la ligne est ajoutée puis copiée en fin du 2e tableau je souhaiterais réaliser un cadre autour de celle-ci (après les essais que j'ai fait au mieux j'ai réussi a avoir un tableau en fin de tableau mais dans le 1er tableau ce qui me sert a rien).

je vous joins mes fichiers.
Quand vous aurez le temps , si vous pouviez y jeter un coup d'oeil..

je vous remercie d'avance.
 

Pièces jointes

  • essais-copie1.zip
    46.8 KB · Affichages: 36
  • essais-copie2.zip
    17 KB · Affichages: 26

Modeste

XLDnaute Barbatruc
Re : Miser en forme + bordure

Bonsoir warrio, le forum,

Oui, c'est encore moi (j'ai dû prendre un abonnement, sans le savoir). Si tu es débutant en vba (en tout cas plus encore que moi) je te propose d'essayer de te simplifier la vie. J'ai jeté un oeil à ton code ... et me dis que ton histoire de formats, de bordures, etc risquent de devenir difficiles à gérer.
Deux solutions:
- la plus simple, sélectionner tes colonnes entières (à la limite dans toutes les feuilles simultanément), leur appliquer le format désiré et utiliser le collage spécial proposé dans mon précédent message.
- un chouïa plus compliquée (mais moins que ce que tu essayes de faire). En imaginant que tu ne souhaites pas avoir des cellules mises en forme quand elles sont vides, tu peux utiliser une Mise en forme conditionnelle (menu Format) et demander à Excel d'appliquer le format souhaité, dès que la première cellule de la ligne contient quelque chose.
Pour illustrer, la "MFC", mise en oeuvre dans les colonnes A à J des 2 feuilles dans le classeur joint (MFC appliquée sur 50 lignes).

... à toi de voir
 

Pièces jointes

  • essais nomenclature MFC.zip
    18.3 KB · Affichages: 33

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch