A voir également:
- Largeur de colonne s'incrémente de 1 cm sur 60 colonnes
- Déplacer une colonne excel - Guide
- Règle en cm sur téléphone - Guide
- Triez la liste comme sur cette illustration (attention, on ne voit que le début …). quel est le mot formé par les 6 dernières lettres de la colonne code ? - Forum Excel
- Le fichier contient une liste de prénoms. triez ce tableau par ordre alphabétique des prénoms. quel mot est formé par les 6 premières lettres de la colonne code ? - Forum Bureautique
- Paramétrez l'impression de ce document de telle sorte que les 5 colonnes occupent toute la largeur de la page (orientation portrait, format a4). combien de pages seront imprimées ? ✓ - Forum Bureautique
7 réponses
eriiic
Messages postés
24512
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
24 mars 2023
7 168
Modifié par eriiic le 5/03/2013 à 12:16
Modifié par eriiic le 5/03/2013 à 12:16
Bonjour à tous,
Une proposition :
Dans le code fixer la 1ère colonne de référence (ici 3) et le nombre total de colonnes (ici 10)
La macro multiplie par x fois 1.2 la largeur de chaque colonne selon sa position.
Comme dit scinarf c'est la largeur en caractères qui compte. Tu auras sûrement un décalage à cause de ça (pas le choix de toute façon), ajuste éventuellement le 1.2
Sinon, sur le même principe, tu peux faire l'inverse en partant de la colonne la plus large, les erreurs d'arrondi seront moins gênantes
eric
PS: je viens de réaliser que tu voulais ajouter et non pas multiplier, pas grand chose à modifier mais je dois m'absenter...
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
Une proposition :
Sub largCol()
Dim col As Long, col1 As Long, larg1 As Single
col1 = 3
larg1 = Columns(col1).ColumnWidth
For col = col1 + 1 To col1 + 10
Columns(col).ColumnWidth = larg1 * 1.2 ^ (col - col1)
Next col
End Sub
Dans le code fixer la 1ère colonne de référence (ici 3) et le nombre total de colonnes (ici 10)
La macro multiplie par x fois 1.2 la largeur de chaque colonne selon sa position.
Comme dit scinarf c'est la largeur en caractères qui compte. Tu auras sûrement un décalage à cause de ça (pas le choix de toute façon), ajuste éventuellement le 1.2
Sinon, sur le même principe, tu peux faire l'inverse en partant de la colonne la plus large, les erreurs d'arrondi seront moins gênantes
eric
PS: je viens de réaliser que tu voulais ajouter et non pas multiplier, pas grand chose à modifier mais je dois m'absenter...
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
scinarf
Messages postés
1098
Date d'inscription
samedi 18 novembre 2006
Statut
Membre
Dernière intervention
25 septembre 2014
291
5 mars 2013 à 11:27
5 mars 2013 à 11:27
Bonjour,
Question pourquoi vouloir exactement 1cm puis 1.2 cm puis 1.4cm ect ...
Il est largement possible de faire une macro qui augmente la taille des colonnes en fonction du nombre d'une unité bien spécifique à Excel la taille du caractère.
En effet, après de brève recherches la longueur de la colonne par défaut est définit comme valant 8.43 caractères (aucune idée du pourquoi) par défaut (police Arial taille 10 il me semble).
On peut faire un programme basé la dessus, mais le mieux c'est de créer une macro qui fait a ce que vous souhaitez sans vous soucier de la taille du caractère (plus facile).
Je posterai le code quand vous m'aurez répondu pour ne pas que je le fasse inutilement.
Question pourquoi vouloir exactement 1cm puis 1.2 cm puis 1.4cm ect ...
Il est largement possible de faire une macro qui augmente la taille des colonnes en fonction du nombre d'une unité bien spécifique à Excel la taille du caractère.
En effet, après de brève recherches la longueur de la colonne par défaut est définit comme valant 8.43 caractères (aucune idée du pourquoi) par défaut (police Arial taille 10 il me semble).
On peut faire un programme basé la dessus, mais le mieux c'est de créer une macro qui fait a ce que vous souhaitez sans vous soucier de la taille du caractère (plus facile).
Je posterai le code quand vous m'aurez répondu pour ne pas que je le fasse inutilement.
Merci pour vos réponses,
C'était un exemple 1, 1,2 1,4 c'est égal en fait.
Ce que j'aimerais par exemple c'est la colonne C à 2, la colonne D à 3, la colonne E à 4 etc...
Est-ce que c'est ce même code
Merci bien pour votre aide
C'était un exemple 1, 1,2 1,4 c'est égal en fait.
Ce que j'aimerais par exemple c'est la colonne C à 2, la colonne D à 3, la colonne E à 4 etc...
Est-ce que c'est ce même code
Merci bien pour votre aide
Alors le code est bien mais j'aurais voulu avoir par exemple la 1ère colonne à 7, la deuxième colonne à 8,5 etc... est-ce possible ?
Merci de m'aider
Sub largCol()
Dim col As Long, col1 As Long, larg1 As Single
col1 = 3
larg1 = Columns(col1).ColumnWidth
For col = col1 + 1 To col1 + 10
Columns(col).ColumnWidth = larg1 * 1.2 ^ (col - col1)
Next col
End Sub
Merci de m'aider
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re-Bonjour,
Si vous avez un peu de temps...
Si vous avez un peu de temps...
eriiic
Messages postés
24512
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
24 mars 2023
7 168
5 mars 2013 à 19:16
5 mars 2013 à 19:16
Déjà c'est la 2nde version qu'il fallait prendre.
Tu règles manuellement la largeur de la 1ère colonne sur la feuille.
D'abord tu donnes un exemple qui ne correspond pas, ensuite ta demande change 3 fois.
Fallait demander tout de suite ce que tu voulais.
A toi de réfléchir et d'adapter en fonction de ton besoin.
eric
Tu règles manuellement la largeur de la 1ère colonne sur la feuille.
D'abord tu donnes un exemple qui ne correspond pas, ensuite ta demande change 3 fois.
Fallait demander tout de suite ce que tu voulais.
A toi de réfléchir et d'adapter en fonction de ton besoin.
eric
Salut à tous,
Dslé Eriiic tu as raison ...
J'ai pris la 2ème version régler manuellement la largeur de la première colonne et ensuite j'ai lancer la macro mais j'ai l'erreur suivante qui apparaît:
Erreur d'exécution 1004
Impossible de définir la propriété ColumnWidth de la Classe Range
Merci pour votre aide
Dslé Eriiic tu as raison ...
J'ai pris la 2ème version régler manuellement la largeur de la première colonne et ensuite j'ai lancer la macro mais j'ai l'erreur suivante qui apparaît:
Erreur d'exécution 1004
Impossible de définir la propriété ColumnWidth de la Classe Range
"Columns(col).ColumnWidth = larg1 * 1.2 ^ (col - col1)"
Merci pour votre aide
eriiic
Messages postés
24512
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
24 mars 2023
7 168
6 mars 2013 à 08:48
6 mars 2013 à 08:48
Bonjour,
j'ai testé avant de poster, chez moi ça marche bien.
Déposer le fichier xls (réduit au nécessaire et anonymisé, avec les explications et éventuellement le résultat attendu) sur cjoint.com et coller ici le lien fourni.
eric
j'ai testé avant de poster, chez moi ça marche bien.
Déposer le fichier xls (réduit au nécessaire et anonymisé, avec les explications et éventuellement le résultat attendu) sur cjoint.com et coller ici le lien fourni.
eric
Merci pour la réponse,
En fait j'ai réduit la colonne A à 5.57 et ensuite exécuter la macro suivante
Il me fait bien ce que je souhaite mais m'afficher la boîte de débogage
http://cjoint.com/?CCgjsLcMS4A
Le lien pour le fichier excel
http://cjoint.com/?CCgjwiRai5c
Merci
En fait j'ai réduit la colonne A à 5.57 et ensuite exécuter la macro suivante
Sub largCol()
Dim col As Long, col1 As Long, larg1 As Single
col1 = 1
larg1 = Columns(col1).ColumnWidth
For col = col1 + 1 To col1 + 30
Columns(col).ColumnWidth = larg1 * 1.2 ^ (col - col1)
Next col
End Sub
Il me fait bien ce que je souhaite mais m'afficher la boîte de débogage
http://cjoint.com/?CCgjsLcMS4A
Le lien pour le fichier excel
http://cjoint.com/?CCgjwiRai5c
Merci
eriiic
Messages postés
24512
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
24 mars 2023
7 168
Modifié par eriiic le 6/03/2013 à 09:42
Modifié par eriiic le 6/03/2013 à 09:42
La largeur maxi d'une colonne est 255 :
Columns(col).ColumnWidth = Application.Min(255, larg1 * 1.2 ^ (col - col1))
Et tu es resté sur la 1ère version, celle qui augmente proportionnellement et non par une constante ...
eric
Columns(col).ColumnWidth = Application.Min(255, larg1 * 1.2 ^ (col - col1))
Et tu es resté sur la 1ère version, celle qui augmente proportionnellement et non par une constante ...
eric
Ok
Alors actuellement j'ai pris la version de mon précédent c'est-à-dire la deuxième version.
Mais je peux prendre la première version si c'est mieux ? Le truc c'est qu'il y a 60 colonnes avec ma colonne "A" de départ qui fait 5.57. Mais si c'est possible de régler mois que 1,2 à chaque fois cela me va aussi.
Alors actuellement j'ai pris la version de mon précédent c'est-à-dire la deuxième version.
Mais je peux prendre la première version si c'est mieux ? Le truc c'est qu'il y a 60 colonnes avec ma colonne "A" de départ qui fait 5.57. Mais si c'est possible de régler mois que 1,2 à chaque fois cela me va aussi.
eriiic
Messages postés
24512
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
24 mars 2023
7 168
6 mars 2013 à 10:57
6 mars 2013 à 10:57
tu fais comme tu veux
eriiic
Messages postés
24512
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
24 mars 2023
7 168
6 mars 2013 à 18:31
6 mars 2013 à 18:31
Il n'y en a pas une meilleure que l'autre, elle ne font pas la même chose.
La 1ère augmentera la largeur de la colonne de x% par rapport à la précédente (j'avais mal interprété ta demande)
Le 2nde augmente la largeur d'une valeur constante.
eric
La 1ère augmentera la largeur de la colonne de x% par rapport à la précédente (j'avais mal interprété ta demande)
Le 2nde augmente la largeur d'une valeur constante.
eric
Modifié par eriiic le 5/03/2013 à 13:27
version corrrigée :
Sub largCol() Dim col As Long, col1 As Long, larg1 As Single col1 = 3 larg1 = Columns(col1).ColumnWidth For col = 1 To 9 Columns(col + col1).ColumnWidth = larg1 + larg1 / 5 * col Next col End Suberic