Simplification attributs cellule/colonne sur une ligne
Résolu
dhaze
Messages postés
113
Statut
Membre
-
dhaze Messages postés 113 Statut Membre -
dhaze Messages postés 113 Statut Membre -
Bonjour à tous,
Est-il possible de simplifier cette formule ?
Pour la mettre sur une seule ligne.
Du genre :
Pourquoi ?
J'ai énormément d'attributs différents pour chaque colonne, et je voudrais préparer ma macro en faisant une ligne = une colonne.
Plus clair et plus facile à élaborer...
Merci de vos lumières
Lo.
Est-il possible de simplifier cette formule ?
Range("G1").Value = "[DOC]"
Range("G1").Select
With Selection
.Orientation = 90
End With
Columns("G:G").Select
With Selection
.EntireColumn.AutoFit
End With
Pour la mettre sur une seule ligne.
Du genre :
Cells(1, 7) = "[DOC]" + .Orientation = 90 + .EntireColumn.AutoFit
Pourquoi ?
J'ai énormément d'attributs différents pour chaque colonne, et je voudrais préparer ma macro en faisant une ligne = une colonne.
Plus clair et plus facile à élaborer...
Merci de vos lumières
Lo.
A voir également:
- Simplification attributs cellule/colonne sur une ligne
- Déplacer une colonne excel - Guide
- Comment trier une colonne sur excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Partager photos en ligne - Guide
- Colonne word - Guide
5 réponses
Salam dhaze.
Personnellement, j'opterais pour ce code :
Le code affecte d'abord les valeurs aux cellules puis, en une seule fois, fixe à 90 l'orientation de la ligne 1 et applique la fonction Autofit.
NB : les "Value" et "Select" sont inutiles, ils ne sont générés que lors de l'enregistrement automatique des macros.
Est-ce bien cela que tu voulais ?
:)
Personnellement, j'opterais pour ce code :
Range("A1") = "[DOC1]"
Range("B1") = "[DOC2]"
Range("C1") = "[DOC3]"
Range("D1") = "[DOC4]"
Range("E1") = "[DOC5]"
Rows(1).Orientation = 90
Cells.EntireColumn.AutoFit
Le code affecte d'abord les valeurs aux cellules puis, en une seule fois, fixe à 90 l'orientation de la ligne 1 et applique la fonction Autofit.
NB : les "Value" et "Select" sont inutiles, ils ne sont générés que lors de l'enregistrement automatique des macros.
Est-ce bien cela que tu voulais ?
:)
Merci pour cette réponse.
Mais c'est pas exactement ça.
Mon problème, c'est que le ou les attributs ".format de cellule"
sont différents dans chaque colonne.
Cela peut être l'orientation, la largeur(fixe ou auto), etc...
En moyenne, j'ai une soixantaine de colonnes par feuille...
Toutes avec des attributs différents !
Surtout des largeurs, et parfois une orientation à 90° quand il y a des accolades (ce qui pourrait être géré en fin de macro par un .Find("[") ).
Je pense que la difficulté c'est qu'il y ait, à la fois des attributs liés à la première cellule, puis à la colonne entière...
Lo.
Mais c'est pas exactement ça.
Mon problème, c'est que le ou les attributs ".format de cellule"
sont différents dans chaque colonne.
Cela peut être l'orientation, la largeur(fixe ou auto), etc...
Cells(1,7) = "[DOC]" + .Orientation = 90 + .EntireColumn.AutoFit Cells(1,8) = "Titre" + .ColumnWidth = 50 + .EntireColumn.WrapText Cells(1,9) = "Auteur" + .ColumnWidth = 30 Cells(1,10) = "Fond" + .ColumnWidth = 20 Ne pas se fier à la "grammaire" de ce code qui est bien sûre fausse !
En moyenne, j'ai une soixantaine de colonnes par feuille...
Toutes avec des attributs différents !
Surtout des largeurs, et parfois une orientation à 90° quand il y a des accolades (ce qui pourrait être géré en fin de macro par un .Find("[") ).
Je pense que la difficulté c'est qu'il y ait, à la fois des attributs liés à la première cellule, puis à la colonne entière...
Lo.
Bonsoir Dhaze
Et pourquoi ne pas préparer dans un tableau les différents attributs par colonne et faire ensuite par macro lire le tableau affecter les attributs sur une autre feuille ?
Exemple :
https://www.cjoint.com/?0CmaZeh0KTA
Cdlmnt
Et pourquoi ne pas préparer dans un tableau les différents attributs par colonne et faire ensuite par macro lire le tableau affecter les attributs sur une autre feuille ?
Exemple :
https://www.cjoint.com/?0CmaZeh0KTA
Cdlmnt
Merci !
Pas mal ta solution, je la garde au chaud ;-)
Mais pour des raisons de sécurité tout doit se trouver dans des macros verrouillées. Le reste du tableau étant "libre"...
J'ai bien pensé à xlSheetVeryHidden, mais je voudrais bien trouver une solution uniquement par macro.
Beau boulot, merci encore.
Lo.
Pas mal ta solution, je la garde au chaud ;-)
Mais pour des raisons de sécurité tout doit se trouver dans des macros verrouillées. Le reste du tableau étant "libre"...
J'ai bien pensé à xlSheetVeryHidden, mais je voudrais bien trouver une solution uniquement par macro.
Beau boulot, merci encore.
Lo.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour via55,
Après avoir fait quelques essais,
je crois que ton approche est bien la bonne ;-)
Je vais mettre toutes mes en-têtes et leurs formats dans
une feuille xlSheetVeryHidden.
Comme CJoint a fait le ménage, je me permets de mettre
ta macro en clair pour ceux que cela pourrait aider.
Merci
Lo.
Après avoir fait quelques essais,
je crois que ton approche est bien la bonne ;-)
Je vais mettre toutes mes en-têtes et leurs formats dans
une feuille xlSheetVeryHidden.
Comme CJoint a fait le ménage, je me permets de mettre
ta macro en clair pour ceux que cela pourrait aider.
+---+-----------------+-------+--------+--------+-------+
| | A | B | C | D | E |
+---+-----------------+-------+--------+--------+-------+
| 1 | N° colonne | 7 | 8 | 9 | 10 |
+---+-----------------+-------+--------+--------+-------+
| 2 | ligne 1 | [DOC] | Titre | Auteur | Fond |
+---+-----------------+-------+--------+--------+-------+
| 3 | orientation | 90 | 0 | 0 | 0 |
+---+-----------------+-------+--------+--------+-------+
| 4 | largeur | | 50 | 30 | 20 |
+---+-----------------+-------+--------+--------+-------+
| 5 | Colonne entiere | A | W | | |
+---+-----------------+-------+--------+--------+-------+
Sub mise_en_page() dercol = Sheets(1).Cells(1, Cells.Columns.Count).End(xlToLeft).Column For n = 2 To dercol With Sheets(1) colonne = .Cells(1, n) titre = .Cells(2, n) orient = .Cells(3, n) largeur = .Cells(4, n) entiere = .Cells(5, n) End With With Sheets(2) .Cells(1, colonne) = titre If orient > 0 Then .Cells(1, colonne).Orientation = orient If largeur > 0 Then .Cells(1, colonne).ColumnWidth = largeur If entiere = "A" Then .Cells(1, colonne).EntireColumn.AutoFit If entiere = "W" Then .Cells(1, colonne).EntireColumn.WrapText = True End With Next End Sub
Merci
Lo.