Changement de format avec changement de valeur de cellule

Bonjour

j'Essayue de créer une macro vba pour changer le format: l'alignement, la larfgeur d'une cellule la taille dans la region a1:h10

mais le code s'execute dans tous les cellules. la commande c.size qui controle la taille du text bug pour une raison que je ne connais pas alors je l'ai suprimé. voici mon code:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range

 Set Rg = Intersect(Target, Range("a1:h10"))

 For Each c In Target

    If c.Value <> "" Then
    With Selection.Font
        c.Name = "Calibri"
        c.ColumnWidth = 18
        c.HorizontalAlignment = xlCenter
        c.VerticalAlignment = xlCenter
        c.WrapText = True
    End With
 End If

   Next
End Sub

Bonjour à tous!

Abdel39,

Enlève la ligne with selection.font et end with

et modifie c.font.name = "Calibri"

Bonne journée!

c'est toujours le meme problème

je viens de regfler le probleme definitivement:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rg As Range
Dim Rg1 As Range

 Set Rg = Range("a1:h10")
 Set Rg1 = Range("i1:zz10")
 If Not Rg Is Nothing Then
 For Each C In Rg

    If C.Value <> "" Then
        With Range("a1:h10")
        C.Font.Name = "calibri"
        C.ColumnWidth = 18
        C.HorizontalAlignment = xlCenter
        C.VerticalAlignment = xlCenter
        C.WrapText = True

   End With

    End If
   Next
   Else
   For Each C In Rg1
   Exit Sub
   Next
   End If

End Sub

ceci fonctionne dans unb document test

mais une fois je transmet le meme code dans ma vraie feuille de travail je recois un code d'erreur run time erreor 1004

unable to set the name properly of the font class

pourquoi ca marche dans un fichier et non pas dans un autre?

finalement: c'etait le probleme de verrouillage des cellules: il fal;lait permettre de jouer le format des cellules colonne et lignes lorsqu'on verouille la feuille

c'est reglé

Bonjour

Vous avez ouverts trois fils sur le même sujet ! Celui ci puis ici https://forum.excel-pratique.com/excel/boucle-for-next-qui-ne-marche-pas-bien-probleme-regle-180286 et un troisième qui a dû être supprimé.

Merci de veillez à rester sur votre fil et votre souci est réglé de cloturer votre fil

Bonjour

je tiens à remercier ce site qui m'a initié aux VBA.

J'aime bien partagé un sujet que j'Avais entamé il y a quelques jours. En effet, je voulais que une fois une cellule d'une plage est non vide sa largeur devient 18 et lorsqu'elle est vide la largeur rebient à 8. Autofit n'est pas esthetique car pour une entrée d'un caractere la largeur est tres petite. En plus le code de depart prenait seulement la taille 8, alors que je voulais que une fois la cellule est non vide la largeur est 18, une fois vide elle revient à 8.

j'ai developpé deux codes: un prenait seulement 18 sans revenir à 8, acceptable dans certaine mesure, et l'autre prenait seulement 8. le troisiement code qui respectait mes conditions je l'ai debogué par hasard en mettant un exit sub au milieu du code et ca marche en ajoutant un wraptext et le centrage.

voici le code qui ne revient pas à 8 et prend sedulement la condition largeur 18:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rg As Range
Dim Rg1 As Range

 Set rg = Range("a1:h10")
 Set Rg1 = Range("i1:z10")

 For Each c In rg

    If c.Value <> "" Then
        With Range("a1:h10")
        c.Font.Name = "calibri"
        c.ColumnWidth = 18
        c.HorizontalAlignment = xlCenter
        c.VerticalAlignment = xlCenter
        c.WrapText = True

   End With

    End If
   Next

   For Each c In Rg1
   Exit Sub
   Next

End Sub

alors qu'on travaillant sur un petit exemple le programme est complet: ca prend le format que je veux une fois la cellule est non vide et ca revient à la largeur 8 une fois vide:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim c As Range
Set rg = Range("a1:c5")

For Each c In rg
 If c.Value <> "" Then
 c.ColumnWidth = 18
 c.WrapText = True
 c.HorizontalAlignment = xlCenter
 c.VerticalAlignment = xlCenter
 Exit Sub
ElseIf c.Value = "" Then
 c.ColumnWidth = 8
 c.WrapText = True
 c.HorizontalAlignment = xlCenter
 c.VerticalAlignment = xlCenter

 End If
 Next
End Sub

ca pourrait interesser ceux qui ont besoin

Bonjour

une mise à jours à venir

Rechercher des sujets similaires à "changement format valeur"