XL 2013 Conservation des couleurs après importation de données

an@s

XLDnaute Occasionnel
Bonjour le forum,
je reviens vers vous à nouveau pour vous demander si c'est possible de modifier le code ci-dessous fourni par job pour conserver les couleurs après importation

VB:
Private Sub CommandButton1_Click()
Dim ncol%, nlig&, t, nlig1&, P As Range, d As Object, i&, P1 As Range, x$, j&
ncol = 45 'nombre de colonnes du tableau, adaptable
Application.ScreenUpdating = False
With Workbooks.Open(ThisWorkbook.Path & "\Matrice.xlsx").Sheets("MNT")
  nlig = .Range("C" & .Rows.Count).End(xlUp).Row
  If nlig > 1 Then nlig = nlig - 1
.[E2].Resize(nlig) = "=RC[4]-RC[7]-(RC[40]+RC[31]+RC[18])"
.[M2].Resize(nlig) = "=RC[-4]-RC[-1]"
.[N2].Resize(nlig) = "=RC[-2]+(RC[9]+RC[22]+RC[31])"
.[O2].Resize(nlig) = "=IFERROR(RC[-3]/RC[-1],"""")"
.[W2].Resize(nlig) = "=SUM(RC[-5]:RC[-1])"
.[AJ2].Resize(nlig) = "=SUM(RC[-12]:RC[-1])"
.[AS2].Resize(nlig) = "=SUM(RC[-8]:RC[-1])"
t = .[A2].Resize(nlig, ncol).FormulaR1C1
  .Parent.Close False
End With
'---restitution des valeurs et formules du 1er tableau---
nlig1 = Range("C" & Rows.Count).End(xlUp).Row + 2
With [A3].Resize(nlig1, ncol)
  .Borders.LineStyle = xlNone 'supprime les bordures
  .Copy [A3].Offset(, ncol) 'sauvegarde TOUT le tableau vers la droite
  .Delete xlUp 'RAZ
End With
Set P = [A3].Resize(nlig, ncol)
P = t
'---liste des "Hiérarchie OTP" du 1er tableau (sans doublon)---
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To nlig
  If t(i, 3) <> "" Then d(t(i, 3)) = i 'repère la ligne
Next i
'---copie les lignes du 2ème tableau vers le 1er---
Set P1 = [A3].Offset(, ncol).Resize(nlig1, ncol)
For i = 1 To nlig1
  x = P1(i, 3)
  If x <> "" And d.Exists(x) Then
    j = d(x)
    P(j, "E") = P1(i, "E").FormulaR1C1
    P(j, "M") = P1(i, "M").FormulaR1C1
    P(j, "N") = P1(i, "N").FormulaR1C1
    P(j, "O") = P1(i, "O").FormulaR1C1
    P(j, "W") = P1(i, "W").FormulaR1C1
    P(j, "AJ") = P1(i, "AJ").FormulaR1C1
    P(j, "AS") = P1(i, "AS").FormulaR1C1
    P1.Rows(i).Copy
    P(j, 1).PasteSpecial xlPasteFormats 'copie les couleurs
  End If
Next i
P1.EntireColumn.Delete 'RAZ
'---bordures---
P.Borders(xlEdgeLeft).Weight = xlThin
P.Borders(xlEdgeTop).Weight = xlThin
P.Borders(xlEdgeRight).Weight = xlThin
P.Borders(xlEdgeBottom).Weight = xlMedium 'pourquoi pas...
P.Borders(xlInsideVertical).Weight = xlThin
P.Borders(xlInsideHorizontal).Weight = xlHairline
'---actualise les barres de défilement---
With Me.UsedRange: End With
[A1].Select
End Sub


Merci d'avance

Amicalement
Ana@s
 

Pièces jointes

  • Matrice.zip
    105.4 KB · Affichages: 64

job75

XLDnaute Barbatruc
Bonjour an@s,

Vous avez la tête dure, ce qu'on vous dit entre par une oreille et ressort par l'autre.

Mon code conserve les couleurs des lignes qui existaient avant la nouvelle importation.

Les lignes nouvelles créées sont incolores, pour les colorer il faut le faire à la main ou construire une usine à gaz.

Et il faudrait se donner des critères pour la coloration...

Mais il y a peut-être des amateurs d'usine à gaz sur ce forum :rolleyes:

A+
 

job75

XLDnaute Barbatruc
Re,

Si les données que vous modifiez en colonne C existent dans le fichier à importer, leurs lignes seront conservées avec les couleurs.

Si elles n'existent pas eh bien leurs lignes seront purement et simplement supprimées.

C'est vous qui l'avez voulu ainsi, il ne faudrait pas l'oublier !

Et n'oubliez pas qu'il ne faut pas de doublons en colonne C...

A+
 

an@s

XLDnaute Occasionnel
Bonsoir Job, le forum,
Je reviens vers vous à nouveau poursolliciter votre aide concernant le sujet des couleurs
L'importation fait disparaitre Les couleurs quand les données de la colonne C changent, c'est à dire en passant d'un chantier à autre les couleurs disparaissent chose qui fait buguer le code de calcule qui est lié au couleurs, :(
est ce qu'on peut pas faire références à plusieurs colonnes non pas seulement la colonne C pour pouvoir conserver les couleurs ??
C'est a dire si les donnes des colonnes A, B, C, D, E changent en ce moment on ne conserve pas les couleurs mais si une donnée par exemple da ligne est toujours la même on conserve les couleurs.
Trouvez moi s'il vous plait une solution à ce problème,
Je vous en serais eternellement reconnaissant

Cordialement
An@s
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 132
Messages
2 116 587
Membres
112 798
dernier inscrit
nicoolio