Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Copie des formats des cellules

  • Initiateur de la discussion Sylvain
  • Date de début
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, @+
 
D

David Guy

Guest
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
 
L

Ludwig

Guest
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
 
S

Sylvain

Guest
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

  • RecopieMiseForme.zip
    4.3 KB · Affichages: 34
  • RecopieMiseForme.zip
    4.3 KB · Affichages: 29
  • RecopieMiseForme.zip
    4.3 KB · Affichages: 32
D

David Guy

Guest
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
 
S

Sylvain

Guest
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, @+
 
D

David Guy

Guest
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
 
S

Sylvain

Guest
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

  • RecopieMiseForme.zip
    11.8 KB · Affichages: 34
  • RecopieMiseForme.zip
    11.8 KB · Affichages: 33
  • RecopieMiseForme.zip
    11.8 KB · Affichages: 37
L

Ludwig

Guest
Bonjour Sylvain,

Voici un exemple qui devra être améliorer mais ce sera une bonne piste du moins je l'espère

Ludwig
 

Pièces jointes

  • RecopieMiseFormeV2.zip
    17.6 KB · Affichages: 34

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…