Liaison entre deux classeurs excel

Fermé
lolob - Modifié par lolob le 24/01/2013 à 16:39
piopicolo Messages postés 1395 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 31 juillet 2023 - 25 janv. 2013 à 08:06
Bonjour,

Je voudrais faire des liaisons entre deux fichiers excel.
J'ai un fichier de référence et sur un autre fichier dupliqué je copie colle avec liaison les colonnes qui m'intéressent. Seulement, sur ce fichier ainsi créé :
- les cellules duplilquées vides apparaissent avec un 0 à l'intérieur.
- et la mise en forme (surlignage, police en couleur....) disparaît.

J'ai besoin de conserver la mise en forme. Pourriez-vous m'aider ?

Merci par avance,

Laurence


A voir également:

2 réponses

Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
25 janv. 2013 à 01:52
Non. Ce n'est pas possible. C'est ainsi que les tableurs fonctionnent : seules les valeurs sont liées, pas les formats ; et une cellule vide contient la valeur zéro.
0
piopicolo Messages postés 1395 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 31 juillet 2023 193
Modifié par piopicolo le 25/01/2013 à 07:26
Salut,
Pour les zéros ce n'est pas un problème. Tu vas dans les Options (options avancées) et tu décoches la case : afficher un zéro quand la case est nulle. Vide n'égale pas zéro mais " " un blanc. Par défaut, les cases sont toutes remplies de blanc (texte) et leur valeur est nulle mais pas tant que tu ne l'as pas calculée.

Pour ce qui est du formatage, tu fais une macro à partir du fichier d'origine.
tu va dans l'onglet "développeur" et à gauche tu as enregistrer une macro.
Tu cliques enregistrer une macro et tu refais exactement les opérations de changement de format que tu as fais dans le fichier référence pour chaque feuille (tu peux faire un enregistrement par feuille ou pour tout le classeur). Si c'est le même formatage sur chaque feuille une seule macro suffit. Elle est applicable à quelque soit la feuille lors d'une exécution : c'est sur la feuille active.
Astuce: Tu peux cliquer sur la case du coin gauche au dessus du numéro de ligne 1 et de la colonne A (case vide) et tu fais un réglage des formats de cellules globalement.
Bref, tu fais ton formatage comme tu le désires et tu arrêtes la macro.
Ensuite tu ouvres le Visual Basic (puis ouvrir module) et tu voies le code que tu as effectué à l'enregistrement.
Quand tu dupliqueras ce fichier la macro sera aussi copiée.
Mais avant, il faut que tu modifies la façon dont la macro se déclenche.
Je suppose que tu veux qu'elle se déclenche quand tu ouvres la première fois le fichier. C'est possible mais pour ça, il faudrait que tu apprennes (c'est facile) comment les déclencher dans la fenêtre VBA en haut à droite (le code est en anglais mais ce n'est pas compliqué).
Il faut copier le module (module1 par défaut) dans chaque feuille et le renommer. Puis, pour la déclencher, utiliser le mode "activate" (fenêtre droite). c'est un peu dur comme çà, mais ça ne l'est pas.
Si tu veux apprendre va sur http://excelabo.net/
Sinon, tu peux lancer la macro une fois que tu as ouvert ton fichier dupliqué et en allant sur "affichage" et "macros".

A+
0
piopicolo Messages postés 1395 Date d'inscription mercredi 21 mars 2007 Statut Membre Dernière intervention 31 juillet 2023 193
25 janv. 2013 à 08:06
Rebonjour,
Par exemple, j'ai fais une macro selon le principe énoncé ci-dessus et je l'ai copiée collée dans le "Workbook" de la fenêtre "Visual Basic" / Projet VBA en haut à gauche / En dessous de feuill1 etc... / This workbook) si tu copies la macro suivante dans le code de ThisWorkbook
à chaque que fois que tu ouvres une feuille le formatage suivant s'effectue:
- centrage des cellules
- font arial 10
- nombre à 2 décimales
- fond gris clair

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Cells.Select
Selection.NumberFormat = "0.00"
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
With Selection.Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
With Selection.Interior
.Pattern = xlSolid
.PatternThemeColor = xlThemeColorDark2
.ThemeColor = xlThemeColorDark1
.TintAndShade = -4.99893185216834E-02
.PatternTintAndShade = 0
End With
Selection.Locked = False
Selection.FormulaHidden = False
End Sub

Si tu veux l'appliquer sur l'ensemble du classeur tu la copies dans un nouveau Sub Workbook_Open().
Le code ci-dessus est généré automatiquement lors de l'enregistrement, ce n'est pas moi qui l'ai tapé. Tu verras que cette méthode te permet de comprendre ce que le code veut dire et comment le modifier toi-même après.
Essaye et bon courage
0