Copie des formats des cellules

  • Initiateur de la discussion Initiateur de la discussion Sylvain
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Sylvain

Guest
Bonjour à tous,

Sous excel 2000, on est limité à 256 colonnes.
Or j'ai besoin pour une banque de donnée de plus de 256 colonnes.
(Impossible de faire le tableau dans l'autre sens, plus de 8000 lignes !)

La solution que j'ai retenue, c'est de mettre mes données sur plusieurs feuilles.
Mais afin de m'y retrouver il me faut quelques colonnes (A à D) recopiée sur les 2 pages.
Or pour plus de clareté, j'avais mis des couleurs de fond et des bordures à ces cellules.

1) Comment faire pour copier par une formule à la fois les données, le format, les bordures et le fond ?
Ceci via une formule car ma liste s'agrandit (nouvelles lignes) régulièrement et je voudrais ne pas devoir faire un copier-coller à chaque fois (ce qui est source d'erreur)

2) Un autre truc un peu similaire:
J'ai une cellule Ax avec une bordure (haut et bas) et une couleur de fond.
Je voudrais que cette bordure et couleur de fond soit appliquée à toute la ligne, comment faire ?
(En réalité, la bordure et la couleur de fond sont les copies de l'autre feuille comment en 1)


PS: Pas de macro, sous forme de formule si possible.

Merci de votre aide, @+
 
Salut
dans un cas comme ça faut passer sous un gestionnaire de base de données (Dbase ) qui ne seront pas limité par le nombre de champ et encore.
autrement je ne vois pas de solution par formule pour ton cas de couleur

G.David
PS je reponds surtout si quelqu'un trouve le truc
 
Salut David, le forum

Une toute petite macro qui répondra à ta première question en attendant autre chose de mieux


Sub Copier()

' Sélectionne les colonnes à copier

Sheets("Feuil1").Select
Columns("A😀").Select
Application.CutCopyMode = False
Selection.Copy

'Copie sur une autre feuille

Sheets("Feuil2").Select
Range("A1").Select
ActiveSheet.Paste
Range("J1").Select

End Sub


Ajoute des détails à ta situation pour améliorer les réponses. Est ce que losque tu ajoutes une ligne tu tris les données ou pas? La couleur et le tsyle des bordures ? etc... ou peut être poster une partie de ton fichier (- de 50 ko).

A plus

Ludwig
 
Bonjour et merci pour vos quelques réponses...

1) "faut passer sous un gestionnaire de base de données (Dbase )"
Sans doute, mais j'y connais rien aux gestionnaire de base de données...


2) Il y a bien par macro, mais par mauvaise expérience, une macro même très simple peut faire très vite perdre un fichier (Petite erreur invisible, macro à n'appliquer que sur tel type de truc, dès qu'il y a un cas particulier, ça plante ou pire, modif les mauvaises données...) donc bof pour moi.

Je sais celà limite beaucoup mais bon...

Par contre, je dis un petit peu moins non au fonction créée sous VBA qui augment les possibilité...
(En faite, ce sont les macro qui remplace tel donnée dans tel cellules qui me gène. Pas les fonction qui n'écrive que dansleur propre cellule)

Par contre, ça donne quelques piste pour une fonction de copie des colonnes A à C (cf ex fichier excel) mais pas pour l'application du format sur toute la ligne (c'est alors plus une macro, que j'aime pas)

3) Je vous joins un fichier exemple de ce que je voudrais avec quelques explication dedans.

Merci de votre aide, @+
 

Pièces jointes

Sylvain
Il y a une impossibilité dans ta demande : une fonction est toujours passive elle ne peut pas manipuler des plage de cellules la seule solution doit passer par des macros .Il faut seulement (d'accord sur 8000 ligne le terme est relatif) que le format soit copié ce qui devrait eviter les erreurs de données . Une boucle pour la totalité des lignes concernées
mais ce sera quand même une macro
Là pour les boucles do loop il faut trouver quelqu'un d'autre que moi .
A+
G.David
 
Merci pour les réponses

J'ai peut etre une solution en VBA entre fonction et macro...

Voilà, dans mon fichier exemple, je voudrais mettre sur la Feuil2, dans la colonne A, un appel de fonction :
Ce qui donnerais pour la case A5 de la Feuil2 :
=CopieFormatLigne(Feuil1!A5)
(facile à recopier par glisser si besoin)

Mais je sais pas comment faire... ni si c'est possible ou pas...
Par contre, comment faire aussi pour que les bordures et fond ne soit pas recalculé à chaque recalcul de la feuille ?

Et cette fonction aura plusieurs chose à faire :

'------------------------------------------------
Function CopieFormatLigne(TmpSource)

'- Récupération du format de la Cellule TmpSource (Bordure + Couleur de fond) -
' ??? Comment ???

'- Selection de la ligne complète de la cellule appelante -
' ??? Comment ??? sans doute avec BackColor...

'- Application du Format de la cellule TmpSource à la ligne complète -
' ??? Comment ???

'- Déselection -
' ??? Comment ???

'- Copie de la valeur de la cellule -
CopieFormatLigne = TmpSource

End Function
'------------------------------------------------

Ou autre idée, macro incluse ?
Si possible je préfère travailler ligne par ligne...

PS: Pour les boucles, je connais.

Merci de votre aide, @+
 
Salut Sylvain
bon si les boucles ne te pose pas de probleme
voici une macro qui recopie le format et les trois les valeur des trois premieres colonne
si tu travail au ligne à ligne attribues la à un bouton (sur le site il y a un petit machin pas piqué des vers qui fait suivre le bouton au curseur ) .TU doit juste etre positionné sur la ligne que tu veut formater veille dans ce cas à ce que tes feuilles 1 et 2 occuppent bien cette place dans le classeur sinon il faudra changer les index de pointage(sheets(x))
si tu veut eviter le clignotement
tu colle l'instruction: Application.ScreenUpdating = False en début de macro


sub copie_formatF1()

nbl = ActiveCell.Row
Sheets(1).Select
a = Range("a" & nbl).Value
b = Range("b" & nbl).Value
c = Range("c" & nbl).Value

Sheets(1).Select
Range("a" & nbl & ":iv" & nbl).Select
Selection.Copy
Sheets(2).Select
Range("a" & nbl & ":iv" & nbl).Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("a" & nbl).Value = a
Range("c" & nbl).Value = c
Range("b" & nbl).Value = b

End Sub
A+ G.David
 
Bonsoir à tous,

Ca y est, c'est ok !

Des formules de recopie sur la feuil2
+ 1 macro qui copie uniquement les Bordures du haut et du bas et la couleur de fond et motif.

Et quelques vérif pour eviter des erreurs avec d'autres feuilles...

Ci-joins mon fichier exemple final.

Faut que je test le temps d'execution sur un gros fichier...

Merci de votre aide qui m'a été précieuse, @+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
56
Affichages
2 K
  • Question Question
Microsoft 365 Souci de copie
Réponses
8
Affichages
262
Réponses
6
Affichages
223
  • Résolu(e)
Microsoft 365 DateDif()
Réponses
5
Affichages
279
Retour