Mise en forme et formule si
Bonjour à tous,
je vais tenter d'exprimer clairement mon besoin.
j'ai un fichier qui est mis en forme ( personnel proximité travail .xlsm) ( les cellules blanche sont destinée a etre masqué)
et un autre ou la liste n'est pas mise en forme ( nouveauté.xlsm)
Je vais être amené a copié les données du fichier "nouveauté" dans le fichier "personnel de proximité"
j'aimerai qu'une macro mette en forme les ligne ajouté au fichier selon des conditions :
Si la cellule c ="Ei", recopier la mise en forme de la ligne 3
si la cellule c:"EIC" , recopier la mise en forme de la ligne 4
si la cellule c:"cor" , recopier la mise en forme de la ligne 5
pensez vous cela réalisable?
A disposition,
merci pour tout
Bonjour,
Suggestion : insertion de ligne à la ligne qui suit la dernière ligne utilisée, les formats suivent, il y aura juste à rajouter les bordures, et affectation à la ligne (plage délimitée) de la valeur de la plage source (sans passer par un copier-coller).
Plus vite écrit et plus vite exécuté...
Cordialement.
Bonjour et merci pour ta réponse,
Cependant, j'avoue ne pas bien saisir ce que tu me demande de faire...
De plus, les lignes que je rajouterai pourront etre des "catégories" EIC, EI ou COR aléatoirement. (Si cela change quelque chose... )
Cordialement,
J'avais zappé, c'est vrai, ta mise en forme colorée... On peut la refaire de toute manière. Plus problématique est si tu veux conserver les formules. Et pourquoi ta plage source est bien inférieure à ta plage cible ?
Il faut aussi savoir à partir de quel classeur est commandée l'opération.
L'opération sera commandé depuis le classeur "personnel de proximite".
Le fichier "nouveauté" sera supprimé des que les lignes seront transférer sur le fichier "personnel de prox"
Mes plages sont différentes car j'ai des infos plus complète dans le "fichier personnel de prox"
Je souhaitait donc juste reprendre la mise en forme des couleurs sur les lignes rajoutées.
Cordialement,
Bonsoir,
Possibilité à étudier :
Sub InserLigne()
Dim nn%, n%, i%, j%, clr&, k, nouv As Range
' A voir selon méthode...
With Workbooks("nouveauté.xlsm").Worksheets("Agents")
nn = .Range("A" & .Rows.Count).End(xlUp).Row - 1
Set nouv = .Range("A1:AN1")
End With
'
k = Array(2, 3, 6, 6, 9, 9, 12, 12, 15, 15, 17, 41)
With Worksheets("mise en forme")
For i = 0 To nn
n = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
.Rows(n).Insert
With .Range("A" & n).Resize(, 53)
With .Borders
.LineStyle = xlContinuous
.Weight = xlThin
End With
.Borders(xlEdgeLeft).Weight = xlMedium
.Borders(xlEdgeRight).Weight = xlMedium
End With
.Range("A" & n).Resize(, 40).Value = nouv.Offset(i).Value
Select Case .Cells(n, 3)
Case "EI": clr = RGB(242, 220, 219)
Case "EIC": clr = RGB(146, 205, 220)
Case "COR": clr = RGB(184, 204, 228)
End Select
For j = 0 To UBound(k) Step 2
.Range(.Cells(n, k(j)), .Cells(n, k(j + 1))).Interior.Color = clr
Next j
Next i
End With
End SubL'insertion se faisant dans le cadre du transfert des données d'un classeur à l'autre, Sur le classeur contenant les données à récupérer, on affecte la première plage (ligne) à transférer à une variable. On dimensionne le nombre de lignes à transférer. On conserve ce nombre -1 (car on atteindra chaque ligne par la méthode Offset appliquée à la 1re plage, donc de 0 au nb de lignes -1).
On définit un tableau des colonnes (alternant début et fin) des cellules à colorer diversement.
Sur la classeur accueillant, la première boucle (i) concerne le nombre de lignes à transférer.
Successivement à chaque tour, on insère une ligne sur la première ligne vide. On la met en forme (la partie non mise en forme automatiquement par Excel).
On affecte la plage à transférer à la nouvelle ligne.
On définit la couleur selon la valeur en colonne C.
On fait une boucle (j) pour colorer les cellules voulues en utilisant le tableau k.
La question ne concernait que la mise en forme, mais une partie dépendant des données transférées, il était difficile de ne pas la situer dans le cadre d'un transfert de données. Les commandes de mise en forme étant clairement délimitées, à toi d'adapter s'il y a lieu selon la méthode que tu utilises.
Cordialement.
Merci beaucoup !
Je vais voir comment adapter ta méthode a mon besoin.
Salutations mon sauveur ^^