Recherche
Posez votre question Signaler

Excel respect de la mise en page!! [Résolu]

geeby 16Messages postés dimanche 25 mai 2008Date d'inscription 12 juin 2008Dernière intervention - Dernière réponse le 7 juin 2008 à 15:59
Bonjour,
je souhaiterais recopier des informations d'une feuille à l'autre tout en gardant la même mise en forme, même couleur etc. sur excel 2003.
En fait je voudrais que les infos de la feuille A se retrouve automatiquement dans la feuille B tout en gardant la même couleur de fond, la même police, couleur de police etc. La mise en forme en fait! J’ai des formules du style : « ='lundi 11 matin'!C15 » j’ai le bon texte qui se retrouve dans la case (logique) mais la mise en forme, est différente de l’original et je n’arrive pas à garder la mise en forme de la cellule souche…Est-ce possible???
Merci d'avance
Geeby
Lire la suite 
Réponse
+4
moins plus
Ou mieux : Clic droit sur l'onglet / Déplacer ou copier... / Créer une copie
Ajouter un commentaire
Réponse
+1
moins plus
Salut moi je fais comme cela :
Click dans la zone en dessus de 1 et a côté de A

ou CTRL+A

Celà Sélectionnes toute la feuille

Click sur l'icône qui a un pinceau (Reproduire la mise en forme)

Selectionnes la nouvelle feuille, et click dans la cellule A1 ; la mise en forme devrait-être la même !
A+

Autre manière :
Edition>Collage Spécial

Option format (activée)
et Aucune comme opération

et tu recommences avec

option formule (activée)
Ajouter un commentaire
Réponse
+1
moins plus
Bon, un peu tarder mais ca n'a pas été simple...
Copie cette macro dans un module.
Par précaution fait un backup de ton fichier.. Ont sait jamais !!
Sub CopieFormat()
Dim i As Integer, e As Integer
Dim Txt As String
Dim T
Dim Cel As Range
Dim R As Long, C As Integer
    Feuil3.Select
    Range("A1:A" & Range("A1").SpecialCells(xlCellTypeLastCell).Row).Select
    For Each Cel In Selection
        Txt = Mid(Cel.Formula, 2)
        If Txt <> "" Then
            T = Split(Txt, "!", -1)
            If Right(T(O), 1) = "1" Then
                Feuil1.Select
            Else
                Feuil2.Select
            End If
            R = Range(T(1)).Row: C = Range(T(1)).Column
            Range(Cells(R, C), Cells(R, C + 2)).Select
            Selection.Copy
            Feuil3.Select
            Cel.Select
            Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False
            Application.CutCopyMode = False
        End If
    Next Cel
End Sub

NB: fonctionne uniquement avec les critères que tu à renseigner et SANS CHANGER LE NOM DES FEUILLES
Sauf pour la 3
Quand tu à ajouter tes cellules tu met le curseur dans la macro et tape F5 ou F8 pour du pas à pas.
Tu dit, si quelque changements ont verras.
A+

EDIT: j'avais pas vu que tu avait une dizaine de feuilles, dans ton premier poste tu parlais de copier feuil1.. Feuil2 dans Feuil3.
C'est ce que ca fait, essaye donc avec Feuil1,2 et 3 je rectifierait si cela convient.
Mais dans tout les cas tu doit laisser les noms des feuilles, moyen de changer mais alors tu devra adapter la macro si tu en est capable.
cbauf 4347Messages postés lundi 31 mars 2008Date d'inscription ContributeurStatut 26 février 2015Dernière intervention - 5 juin 2008 à 02:06
Bonjour lermite222
je suis "niais"
Est-il possible de savoir a quoi se rapporte le (R)

Dim R As Long, C As Integer

Merci
Répondre
cbauf 4347Messages postés lundi 31 mars 2008Date d'inscription ContributeurStatut 26 février 2015Dernière intervention - 5 juin 2008 à 02:12
HOUPS
J'AI PAS TOUT LU .C'EST MON ERREUR

La réponse est dans le topic :)
Répondre
lermite222 8729Messages postés dimanche 8 avril 2007Date d'inscription ContributeurStatut 27 janvier 2014Dernière intervention - 5 juin 2008 à 11:23
bonjour,
Le R est dimentionner en long parce qu'il peut y avoir plus de 32000 lignes
et C en integer parce q'il n'y a jamais 32000 colonne.
A+
Répondre
cbauf 4347Messages postés lundi 31 mars 2008Date d'inscription ContributeurStatut 26 février 2015Dernière intervention - 7 juin 2008 à 04:17
Merci de me répondre
32'000 colonne ? je pensais que la limite est 256 ? (tab excel)
alors fatalement totalement perdu !
a+
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Merci pour vos réponse. Cette méthode ne permet pas de résoudre mon problème car dans la dernière feuille de mon classeur se retrouvent des informations de plusieurs feuilles et je souhaite que chaque texte garde la mise en forme de la case dont il est issu et étant donné que je trie les infos dans la dernière feuille utiliser le pinceau ne permet pas de cibler les cellules en rapport avec cette page mais il l'applique au haut de page uniquement...
Une info donné dans la feuille A et automatiquement répercuté dans la feuille B mais pas obligatoirement au même endroit d'où la recherche d'une autre solution que le pinceau et la copie ne permet pas de mettre ensemble les infos de plusieurs feuilles...

Affaire à suivre...
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour tout le monde,

Tu peux toujours utiliser le pinceau cellule par cellule mais...

A/tu as aussi la solution "style"

Format-style
tu donnes le nom du style par exemple "ventes" avec le motif souhaité,
ensuite pour telle ou telles cellules tu appelles le style
surtout pratique en cas de modification de la présentation des cellules

B/ou encore:

copier-
edition-collage spécial- format
_______

l'avantage des 2 par rapport au pinceau est que tu peux "formater" plusieurs cellules d'un coup

dans tous les cas,cela ne résoud pas la reproduction des hauteurs des lignes

Pour les largeurs de colonnes avec la solution B: collage-spécial, largeur de colonnes.

A toi de voir mais j'avoue ne pas avoir bien compris tes demandes différentes entre la première et ta réponse ou certainement, je ne suis pas encore réveillé.

Michel
Ajouter un commentaire
Réponse
+0
moins plus
Je vais essayer d'etre plus clair car moi aussi j'ai écris au saut du lit...
Donc voila le pb (clairement j'espère):
Prenons 3 feuilles pour faire simple
La première est rempli ainsi

11/06 8h-12h POLYVAL RIANDIERE Bertrand 11/06 8h-12h 10 GIL ALVARO Dominique
11/06 8h-12h POLYVAL DUPART Odile 11/06 8h-12h 10 Mme POTIER
11/06 8h-12h POLYVAL Mme BRIAND
11/06 8h-12h 11 FOURNIER Claire
11/06 8h-12h 25 DEPIERRE Pavel 11/06 8h-12h 11 HAMONET Jean-François

et la deuxième ainsi

12/06 8h-12h 22 ABRAHAM Anne 12/06 8h-12h ETE CANOVILLE Jean-Yves
12/06 8h-12h 22 Mme BOHUON 12/06 8h-12h ETE JEHENNE Maryse
12/06 8h-12h ETE Mme LEROUXEL
12/06 8h-12h 23 RIOUT Estelle
12/06 8h-12h 23 CORPEL Michel 12/06 8h-12h devoirs FOURNIER Claire
12/06 8h-12h devoirs MASSUET Jean-Philippe
12/06 8h-12h 24 BRETONNIERE Laurent 12/06 8h-12h devoirs Mle CHANU

Ma troisième feuille est elle automatiquement remplie en lien avec les deux premières avec des formules ='nom_de_la feuille'!C5 etc.

Ce qui me permet de visualiser toutes les feuilles sur une seule et de pouvoir trier les informations pour chaque personne en faisant un tri.

Comme vous pouvez le voir certains nom sont en gras (voire en couleur, ou les cases remplies) et le problème c'est que cette mise en page individuelle à chaque cellule n'est pas répercuté sur ma troisième feuille

J'espère avoir été plus clair, peut être qu'une macro pourrait m'aider mais alors là je suis pour le moment incapable de la réaliser n'y connaissant rien...
Merci de votre aide!!
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Pas le temps cet aprem et en déplacementy demain, désolé mais il y a du monde sur le forum pour t'aider!
tes mises à tel ou tel format sont elles dues à des mises en formes manuelles ou à des résultat automatiques (mise en forme conditionnelle) ?

En espèrant que qqn te dépannera

Michel
Ajouter un commentaire
Réponse
+0
moins plus
Ce sont des mises en forme manuelles
Peut etre est il possible de créer une macro pour rechercher la cellule cible (d'une cellule de la troisième feuille), copier sa mise en page de cette cible et coller cette dernière mise en page dans la cellule d'arrivée et ça pour toutes les cellules de ma troisième feuille... Si une telle macro est posiible ce serait impécable...
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
En VBA tout est possible (ou presque)
Besoin de quelque explications complémentaires
Les adresses de celules dans la feuille 3, qu'est-ce qui les détermines ?
Tu fait chaque fois un nouvel adressage ? et manuellement.
Combien de lignes pour un seul critère ?
Décrit l'exemple que tu veux obtenir en feuil3
A+
Ajouter un commentaire
Réponse
+0
moins plus
Les adresses des cellules de la feuilles trois sont déterminé manuellement. Je tape sur "=" puis à l'aide de la souris je selctionne la cible et ensuite j'étend la cible avec la souris pour que la sélection fasse le même travail pour retrouver toutes les colonnes de toutes mes feuilles dans la troisième feuille.
J'obtiens donc dans la troisième feuille ceci (je tape les formules qui sont associés aux cellules):
Colonne A: ='feuil1'!A5 / colonne B: ='feuil1'!B5 / colonne C: ='feuil1'!C5
--------------- ='feuil1'!A6 ---------------- ='feuil1'!B6 ---------------- ='feuil1'!C6
--------------- ='feuil1'!A7 ---------------- ='feuil1'!B7 ---------------- ='feuil1'!C7
------------------- etc ..... -------------------- etc....... -------------------- etc........
--------------- ='feuil2'!A5 ---------------- ='feuil2'!B5 ---------------- ='feuil2'!C5
--------------- ='feuil2'!A6 ---------------- ='feuil2'!B6 ---------------- ='feuil2'!C6
--------------- ='feuil2'!A7 ---------------- ='feuil2'!B7 ---------------- ='feuil2'!C7

et ainsi de suite pour une dixaine de feuillles...

et donc je voudrait en plus de récupérer l'occurence des cibles tel que 'feuil2'!B5 sa mise en page (gras couleur de police et de fond...)

Merci
Ajouter un commentaire
Réponse
+0
moins plus
OK, c'est plus clair,
Moi je vois ca avec un bouton dans une barre d'outils (plus facile que dans la feuille)
Aller dans les différentes feuilles, sélectionner la 1ère cellule de la ligne que tu veux avoir dans feuil3 et clic sur le bouton.
Pour cela, encore besoin de réponses..
Les cellules c'est toujour Ax,Bx,Cx où x est le N° bien sûr. ?
Est-ce que le contenu des cellules serait suffisant ? par ex: à la place d'avoir la référence à la cellule tu ai ce qu'elle contient?
Les copies sont elles l'une en dessous de l'autre sans ligne vide ?
Tu dit et fonction de ta réponse je ferais une petite macro.
Ajouter un commentaire
Réponse
+0
moins plus
Non parfois ce sont Dx,Ex et Fx qui se retrouve en Ax,Bx et Cx dans la feuille 3, il existe des lignes vides (pour info je n'utilise pas le copier coller car ce que j'ai fait permet de répercuter tout changement dans l'une de mes feuilles dans la feuille bilan qui elle est triée par ordre alphabétique dans la colonne C donc l'ordre n'est plus respecté par rapport aux autres feuilles c'est a dire que la ligne 1 peut être ='feuil1'!A5 et la ligne 2 ='feuil2'!A34 et ligne 3='feuil1'!A23 ...) C'est pour ça que je pense à une macro qui travaille cellule par cellule...
Mais bon tu t'y connait beaucoup plus que moi donc je te laisse maitre de la macro...
Ajouter un commentaire
Réponse
+0
moins plus
Juste une petite question sans rapport : Où peut on s'instruire en VBA (livre, internet logiciel...)
lermite222 8729Messages postés dimanche 8 avril 2007Date d'inscription ContributeurStatut 27 janvier 2014Dernière intervention - 4 juin 2008 à 16:43
bonjour,
commence par..
http://bidou.developpez.com/article/VBA/
A+
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
Merci de ton aide désolé de répondre si tard mais j'étais au boulot il y a un problème dans la macro. Ca me dit que "erreur d'execution '9': l'indice n'appartient pas à la sélection" si je clique sur débogage ce texte est surligné en jaune : R = Range(T(1)).Row dans la macro?
Je te laisse donc ce problème que tu comprendras sans doute mieux que moi
Je pars deux jours en formationdonc je serais discret sur le sujet ces deux prochains jours mais reprend contact avec toi dès que possible en tout cas merci beaucoup pour ton aide que j'apprécie à sa juste valeur...
Cordialement
geeby
Ajouter un commentaire
Réponse
+0
moins plus
Pas de problème c'est quand tu veux..
pour le débogage..
quand la macro est bloquée tu clic debogage..

dans l'IDE de VBA >> tu tape Ctrl+G pour avoir la fenêtre exécution.. dans cette fenêtre tu tape..
Print T(0)
Print T(1)
tu donne les 2 réponses
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour je prends 5 minutes avant de partir

print T(0)
URVEILLANCE DES EPREUVES ANTICIPEES DU BACCALAUREAT GENERAL
print T(1)
==>fenetre windows s'ouvre et me dit "erreur d'execution '9' : l'indice n'appartient pas à la sélection"

Merci à bientôt
Ajouter un commentaire
Réponse
+0
moins plus
Salut de retour du boulot... J'ai essayé de comprendre le problème et le VBA est encore trop flou pour que je vois quel est le soucis. Qui aurait la solution??
Ajouter un commentaire
Réponse
+0
moins plus
je crois que j'ai compris, tu à des ligne de titres dans tes pages.. modifie la macro comme cella..
Si ca ne va pas encore donne moi les noms des feuilles où tu prend les données.
Sub CopieFormat()
Dim i As Integer, e As Integer
Dim Txt As String
Dim T
Dim Cel As Range
Dim R As Long, C As Integer
    Feuil3.Select
    
    Range("A1:A" & Range("A1").SpecialCells(xlCellTypeLastCell).Row).Select
    For Each Cel In Selection
        Txt = Mid(Cel.Formula, 2)
        If Txt <> "" Then
            T = Split(Txt, "!", -1)
            If UBound(T) = 1 Then
                If Right(T(O), 1) = "1" Then
                    Feuil1.Select
                Else
                    Feuil2.Select
                End If
                R = Range(T(1)).Row: C = Range(T(1)).Column
                Range(Cells(R, C), Cells(R, C + 2)).Select
                Selection.Copy
                Feuil3.Select
                Cel.Select
                Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, _
                SkipBlanks:=False, Transpose:=False
                Application.CutCopyMode = False
            End If
        End If
    Next Cel
End Sub

A+
Ajouter un commentaire
Réponse
+0
moins plus
Bonsoir ou bonjourà tous suivant l'heure de lecture

Geeby,
avec XL<2007
Je te propose de transposer le format de la source dès que tu as saisi la formule dans la zone A1:C1000 ( à adapter à ton pb) de ta feuille de saisie des formules.

1° etape


tu copies la macro ci dessous:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim depart As String, dest As String

'A1:C1000 à adapter à ton pb
If Intersect(Target, Range("A1:C1000")) Is Nothing Then: Exit Sub
If Target.HasFormula = False Then: Exit Sub

dest = Target.Address
depart = Target.Formula
depart = Right(depart, Len(depart) - 1)

Edit: ci joint tite démo (saisie formule en feuille2)
http://cjoint.com/?ghaCc2H3zD
sur 2 feuilles mais il peut y avoir N feuilles source

Call copierformat(depart, dest)

End Sub

tu fais un clic droit sur le nom de l'onglet (bas de l'écran)et "visualiser le code"

tu colles


2° étape

tu copies et tu colles dans ce module

Sub copierformat(ByVal source As String, ByVal cible As String)
With Range(cible)
.Interior.ColorIndex = Range(source).Interior.ColorIndex
With .Font
.FontStyle = Range(source).Font.FontStyle
.ColorIndex = Range(source).Font.ColorIndex
End With
End With
End Sub


Voila, voila

tu retrouves le gras, la couleur de la police et de la cellule quand tu auras écrit la formule et bien sûr validé

N'hésites à demander des précisions ou d'autre transfert de format

Maintenant si tu tiens à déterminer au préalable une zone avec la souris, il y a peu de chose à modifier....

Michel (qui va au dodo, il est minuit et quart)
lermite222 8729Messages postés dimanche 8 avril 2007Date d'inscription ContributeurStatut 27 janvier 2014Dernière intervention - 7 juin 2008 à 00:58
Bonsoir aussi,
Il me semblai que l'ont ne pouvait pas imbrigué les With ?
ou alors il faut donner la référence complète de l'objet externe
:D
A+
Répondre
Ajouter un commentaire
Réponse
+0
moins plus
mais si, on peut, heureusement!...

par contre, sur la message j'ai mis l'édit en plein dans la 1° macro

donc la revolila nettoyée

Private Sub Worksheet_Change(ByVal Target As Range)
Dim depart As String, dest As String

If Intersect(Target, Range("A1:C1000")) Is Nothing Then: Exit Sub
If Target.HasFormula = False Then: Exit Sub

dest = Target.Address
depart = Target.Formula
depart = Right(depart, Len(depart) - 1)
Call copierformat(depart, dest)

End Sub

et enfin la demo avec 2 feuilles d'appel
http://cjoint.com/?ghiiKQoJIs

Michel
Ajouter un commentaire
Ce document intitulé «  excel respect de la mise en page!!  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.