Format de cellule Personnalisée en VBA

  • Initiateur de la discussion Initiateur de la discussion BChaly
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

BChaly

XLDnaute Occasionnel
Bonsoir à tous,

Je souhaite appliquer le format suivant dans une plage de cellules: A / Ma_Valeur / B
Les deux lettres/slashs devant s'afficher automatiquement lorsque j'entre "Ma_Valeur" dans une cellule.

N'ayant pas trouvé de solution avec Format de cellule/Personnalisée, j'ai crée une macro (voir pièce jointe) qui ne fonctionne pas correctement. En effet toutes les cellules de la plage concernée changent à chaque nouvelle entrée, alors que je souhaiterais qu'elles restent inchangées lorsque j'interviens sur une autre cellule.

Merci pour votre aide.

Cordialement,

Chaly
 

Pièces jointes

Re : Format de cellule Personnalisée en VBA

Bonjour
Peut etre eviter la boucle comme ceci:
Option Explicit

Private Sub Worksheet_SelectionChange(ByVal target As Range)

Application.ScreenUpdating = False



If Not Application.Intersect(target, Range("B5:B30")) Is Nothing Then
target = "A / " & target.Text & " / B"
End If

Application.ScreenUpdating = True

End Sub
A++
 
Re : Format de cellule Personnalisée en VBA

Bonsoir,

Merci pour votre réponse.

Malheureusement à chaque déplacement du curseur dans la plage concernée, et sans entrer de valeur, le format est pris en compte. Au contraire, lorsque j'entre une valeur, le format souhaité n'apparait pas.

A+
 
Re : Format de cellule Personnalisée en VBA

Bonsoir
Après avoir regrdé comme il faut ton problème;il va de soit que si tu appelles la macros à chaque changement dans la feuiles les cellules de ta plages vont s'écrire à chaque fois (reformatage des cellules à chaque changements).Donc il faudrait que tu remplisse ta plage et qu'ensuite avec une macro appliquer le formatage......
A++
Voir fichier joint
 

Pièces jointes

Re : Format de cellule Personnalisée en VBA

Bonsoir,

C'est en effet une solution, mais je souhaiterais avoir la possibilité de faire tourner cette macro automatiquement lorsque j'insère une valeur dans une des cellules de la plage définie. Je voudrais éviter un clic ou un raccourci pour appeler la macro.

A+
 
Re : Format de cellule Personnalisée en VBA

Bonsoir à tous,

BCharly, remplace ta "Sub WorksheetSelectionChange" par ceci :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    If Not Intersect(Target, [B5:B30]) Is Nothing And Target.Count = 1 And Target.Value <> 0 Then Target = "A / " & Target.Text & " / B"
    Application.EnableEvents = True
End Sub

Et ça devrait fonctionner.

A+
 
Re : Format de cellule Personnalisée en VBA

Bonsoir à tous,

Merci pour ces réponses fantastiques.

Victor,
Super, c'est simple et facile à réaliser, mais jamais je n'aurais pu trouver ce code.

Fred0o,
Génial, c'est ce que je cherchais à faire depuis longtemps.

Sans vouloir abuser de vos compétences, je me permets de poser une question subsidiaire que je pense impossible à réaliser mais vos connaissances étant impressionantes, on ne sait jamais...

J'aimerais réaliser ceci, soit en modifiant le code de Victor, soit en modifiant la macro de Fred0o:
Est-il possible d'obtenir le format suivant?: "A / abc / B 123".
(Le nombre de caractères reste toujours identique).

En fait, j'aimerais obtenir ce format en tapant "abc123".
("A", "B" et les deux slashs ne changent jamais)
("abc" est une chaine de caractères qui change)
("123" est un nombre qui change également)

En tout cas Merci encore une fois pour votre aide précieuse.

A+
 
Dernière édition:
Re : Format de cellule Personnalisée en VBA

Bonsoir.

Cela me semble difficile avec un format personnalisé, puisque l'entrée est de type alphanumérique, et que les formats personnalisés s'appliquent uniquement aux nombres.
La macro de FredOo me semble par contre adaptable, et vous devriez pouvoir l'adapter si vous en avez décortiqué le fonctionnement.
 
Re : Format de cellule Personnalisée en VBA

Bonsoir à tous,

La modification du code ci-dessous devrait correspondre à ta dernière demande. Je te conseille maintenant de la décortiquer pour pouvoir l'adapter à ton besoin, voire le modifier.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim chn, nbre, pnb, tmp, i
    Application.EnableEvents = False
    If Not Intersect(Target, [B5:B30]) Is Nothing And Target.Count = 1 And Target.Value <> 0 Then
        pnb = 99
        For i = 0 To 9
            tmp = InStr(1, Target, CStr(i))
            If tmp < pnb And tmp <> 0 Then pnb = tmp
        Next
        Target = "A / " & Mid(Target.Text, 1, pnb - 1) & " / B " & Mid(Target.Text, pnb, 99)
    End If
    Application.EnableEvents = True
End Sub

A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
326
Réponses
11
Affichages
933
D
  • Question Question
Microsoft 365 format de cellule?
Réponses
6
Affichages
784
D
Retour