Largeurs de colonnes avec marges réduites qui bug

Bonsoir,

J'avais un module qui fonctionnait bien mais en voulant transposer le code de BsAlv, ça ne fonctionne plus sur ce nouveau classeur à cause du code ==>

.Range("C1:F1").ColumnWidth = 50   'largeur exagéré
image image

Dans l'objet "Feuil1 (Médailles Femmes)", j'ai le code suivant mais qui ne fonctionne plus visiblement :

Private Sub Worksheet_Activate()
     With Me.Range("A1")
          .Value = .Value                    'lancer "change"
     End With
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
     With Me
          .Range("C1:F1").ColumnWidth = 50   'largeur exagéré
          .Range("C:F").EntireColumn.AutoFit
          For i = 3 To 6
               Columns(i).ColumnWidth = Application.Max(1, Columns(i).ColumnWidth - 1)     'éviter d'avoir une valeur négative
          Next i
     End With
End Sub

Une idée ?

Sur le bouton "Débloquer ou Quitter", tapez vodoraix pour tt débloquer.

Et mot de passe pour débloquer les feuilles ==> seb

Merci de m'avoir lu

Bonne soirée

Bonjour,

En principe ce serait ceci:

     With Me
          .Columns("C:F").EntireColumn.ColumnWidth = 50   'largeur exagéré
          For i = 3 To 6
               Columns(i).ColumnWidth = Application.Max(1, Columns(i).ColumnWidth - 1)     'éviter d'avoir une valeur négative
          Next i
     End With

mais, je ne peux pas le tester vu qu'il y a un mot de passe pour protéger les macros et apparemment, ce n'est ni "vodoraix" ni "seb".

Cdlt

Bonjour Arturo83 et merci beaucoup

Inquiétant les mots de passe ==> J'ai testé plusieurs fois et ça fonctionne chez moi donc est-ce-que tous les autres utilisateurs auront également les mêmes problèmes ?

Sinon, pour ta solution, ça ne change pas le résultat. D'ailleurs, sur un autre classeur, ce code fonctionne pourtant parfaitement.

Ca ne peut pas venir de cette feuille qui serait construite différemment ?

image

En tout cas merci beaucoup de t'intéresser à ce sujet

Bonne journée

bonjour Vodoraix, Arturo83,

Y-a-t-il des autres choses, des cellules fusionnées, ... dans une ou plusieurs colonnes, la feuille protégée (normalement la message serait autrement), ... ?

Bonjour,

en effet en bas du tableau vos 4 colonnes sont fusionnées...
Retirez la ligne posant problème, il me semble que l'autofit se suffit à lui même et fonctionne avec les cellules fusionnées, non ?

@ bientôt

LouReeD

Bonjour Bart' et merci beaucoup pour ton intervention

Vui, j'avais des cellules fusionnées ==>

image

J'ai scindé et je n'ai plus de cellules fusionnées mais ça ne change pas :

Toujours le même code erreur...

Merci

à + ...

re,

je n'avais pas ouvert le fichier, mais c'est la protection de la feuille qui est la cause et peut-être la même chose pour la macro

Private Sub Worksheet_Change(ByVal Target As Range)
     With Me
          .Unprotect 'éventuellement avec MdP
          .Range("C1:F1").ColumnWidth = 50   'largeur exagéré
          .Range("C:F").EntireColumn.AutoFit
          For i = 3 To 6
               Columns(i).ColumnWidth = Application.Max(1, Columns(i).ColumnWidth - 1)     'éviter d'avoir une valeur négative
          Next i
          .Protect
     End With
End Sub

Merci Bart'...

J'ai toujours la même erreur :

A savoir que sur l'autre classeur, tu n'avais pas enlevé la protection de la feuille, sur ton code, et ça fonctionnait quand même...

image
Private Sub Worksheet_Activate()
     With Me.Range("A1")
          .Value = .Value                    'lancer "change"
     End With
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
     With Me
          .Unprotect seb 'éventuellement avec MdP
          .Range("C1:F1").ColumnWidth = 50   'largeur exagérée
          .Range("C:F").EntireColumn.AutoFit
          For i = 3 To 6
               Columns(i).ColumnWidth = Application.Max(1, Columns(i).ColumnWidth - 1)     'éviter d'avoir une valeur négative
          Next i
          .Protect
     End With
End Sub

Bonjour,

pour avoir une protection "utilisateur" sans en avoir au niveau du code VBA, pourquoi ne pas utiliser :
.Protect UserInterfaceOnly:=True

Comme cela au niveau du code VBA on n'a plus à se préoccuper de savoir si la feuille est protégée ou pas.
Alors oui il y a des exceptions je crois comme l'ajout d'un shape mais dans l'ensemble je pense que cela limite les problème dont celui-ci, non ?

Private Sub Worksheet_Change(ByVal Target As Range)
     With Me
'          .Range("C1:F1").ColumnWidth = 50   'largeur exagéré
          .Protect MdP, UserInterfaceOnly:=True ' juste pour l'essai, on met la protection
          .Range("C1:F1").EntireColumn.AutoFit
'          For i = 3 To 6
'               Columns(i).ColumnWidth = Application.Max(1, Columns(i).ColumnWidth - 1)     'éviter d'avoir une valeur négative
'          Next i
     End With
End Sub

J'ai commenté la boucle du fait qu'il y a des titres "OR Argent Bronze et 4ième place", donc avec l'autofit les colonnes ne seront pas proches de 0...

@ bientôt

LouReeD

Bonjour LouReeD et merci beaucoup

J'ai essayé ton code mais tjrs pareil : la même erreur de bug.

image

à + ...

même numéro mais pas le même contexte : une fois range, une fois protect, une fois application...

Faut faire refroidir la machine !

Votre fichier modifié avec le code fourni :

Marche t il ? Si oui alors votre fichier est fatigué...

@ bientôt

LouReeD

Merci bcp...

Je fais des courses mais dès que je rentre... je te dirai...

s'il est fatigué, mon fichier, y.aurait un moyen de le vitaminer ?

Bon appétit

J'ai testé, ça marche avec ton fichier...

Que mon conseilles-tu de faire ?

Je garde le tien ou je copie ton code dans le mien. Ou alors peu importe ?

Encore merci à vous 3

Si le problème existe que sur cette feuille et qu'il n'y a pas trop d'interaction avec le reste du fichier, commencez par créer une nouvelle feuilles en copiant/collant les données formules et autres sur la nouvelle feuilles, puis les renommer, une en back pour garder l'originale et l'autre avec le nom attendu.

Voyez si le code fonctionne, si oui vous supprimer la "bak" sinon, faut peut-être refaire un fichier tout propre.
J'ai vu les différents fils pour votre fichier et il y a eu beaucoup de modifications par "rustines", et maintenant avec une vision globale de l'objectif il y a peut-être moyen de tirer tout cela au clair...

Mais si vous commencez a avoir un fichier "bugué" cela ne va pas s'arranger avec le temps, s'il est endommagé en profondeur...

@ bientôt

LouReeD

Trop sympa !!!!!

Je n'ai pas tout compris mais je vais essayer de faire tout ça.

Le problème c'est que pour mettre également le code VBA au propre, je risque de demander beaucoup, beaucoup d'aide car suis nul

Je vais faire au mieux

Mais juste, je peux prendre ton dernier fichier en référence sans risque d'avoir perdu des choses ?

Encore mille mercis pour tout le temps pris pour moi

mon fichier est le votre mais avec la modification du code au niveau de la femmes pour les dames.
par contre je ferais à votre place une modification du code de protection afin de ne pas vous souciez (normalement) d'avoir mis ou pas cette protection pour tout ce qui est modification par le code VBA des feuilles.

@ bientôt

LouReeD

D'accord LouReeD mais je n'ai pas compris le ==> "modification du code de protection afin de ne pas vous souciez (normalement) d'avoir mis ou pas cette protection"...

Par contre tu serais fier de moi ==> G mis la feuille au propre en collant sur une nouvelle, tableau par tableau + les objets, un à un. Comme à l'école quand on recopiait un texte sur une jolie feuille toute neuve Je garde encore un peu la "back", au cas où...

Encore milles mercis pour tes précieux conseils. Pour le VBA, je v y aller en douceur car je n'y comprends pas grand chose

Bonne semaine

Bon, en testant, j'ai une première erreur

J'ouvre un nouveau sujet...

Rechercher des sujets similaires à "largeurs colonnes marges reduites qui bug"