Format personnalisé des cellules

Bonjour,

j'ai plusieurs colonnes où l'on doit insérer un code EAN, donc obligatoirement 13 chiffres. Afin d'éviter les erreurs de saisies et empêcher excel de supprimer le 0 au début j'ai appliqué ceci sur la feuille :

Option Explicit
Private Const NbMaxCar = 13

Private Sub Worksheet_Change(ByVal Target As Range)
    If (Target.Column = 2) And (Len(Target.Value) < NbMaxCar) Or (Target.Column = 7) And (Len(Target.Value) < NbMaxCar) Then
        Target.Select
        MsgBox "le code EAN doit avoir 13 chiffres. Un ou plusieurs 0 ont été ajoutés. Vérifiez le code !"
        Target.NumberFormat = "0000000000000"
    End If
End Sub

Cela fonctionne bien. J'ai des codes internes comme 0000000138109 et il suffit de taper 138109 pour que les 0 apparaissent.

Mais si je colle plusieurs EAN provenant d'un autre document ou si je supprime plusieurs cellules j'ai un message d'erreur d'exécution '13': incompatibilité de type

J'ai tenté plus simple :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 '************ Positionne le Button sur la colonne active
    Target.Select
    With Target
    If Target.Column = 1 Or Target.Column = 2 Then
        Selection.NumberFormat = "0000000000000"
    End If

    End With
End Sub

mais cela ne marche pas quand je colle plusieurs EAN d'un coup.

Avez-vous une piste ?

Merci

bonsoir bliblablouum

tes macros font références à la cellule active de ta feuille, donc si tu colles plus d'un chiffre il n'est pas traité c'est normal

il faut que tu mettes ta colonne qui doit recevoir tes EAN 13 au format que tu souhaites et après tu pourras coller le nombre de chiffre que tu veux, mais attention avec un collage spécial, autrement tu risques de reprendre aussi le format de cellules d’où proviennent les codes EAN 13

a+

Papou

re Bliblablou le forum

tu peux essayer :

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
   activesheet.columns("A:B").NumberFormat = "0000000000000"     
End Sub

a+

Papou

Merci Papou.

activesheet.columns("A:B").NumberFormat = "0000000000000"

n'a pas d"effet. J'ai déjà mis mes colonnes au format désiré mais je voulais une sécurité de plus avant de transmettre le fichier à mes collaborateurs.

Ne peut-on pas contraindre le collage au valeurs seulement ? Je vais chercher.

Re Bliblablou le forum

C'est absolument impossible ce que tu me dis!!

si tu as mis la macro complète sur la selection de n'importe quelle cellule, tu auras systématiquement les deux colonnes qui vont, si ce n'est pas le cas, passer au format désiré.

Bien entendu pour la feuille active, est si tu as bien mis la macro dans la feuille concernée.

a+

Papou

Bonjour,

Bonjour Paritec,

Une proposition ?

Cdlt.

Option Explicit
Private Const NbMaxCar As Byte = 13

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.CountLarge > 1 Then Exit Sub
    If Len(Target.Value) > NbMaxCar Then GoTo exit_Handler
    If Target.Column = 2 Or Target.Column = 7 Then
        With Target
            .NumberFormat = "@"
            .Value = Format(.Value, "0000000000000")
        End With
    End If
    Exit Sub
exit_Handler:
    Application.EnableEvents = False
    Target.Value = ""
    Application.EnableEvents = True
    MsgBox "le code EAN doit avoir 13 chiffres. Un ou plusieurs 0 ont été ajoutés. Vérifiez le code !"
End Sub

Papou,

en effet, je me suis trompé de feuille. Cela fonction pour changer le format mais impossible de coller plusieurs cellules. Par d'erreur, mais "coller" est en grisé.

Bonjour Jean-Eric, ta proposition a fait planté Excel. Si je double clic sur une cellule et que je la quitte en sélectionnant une autre, ça plante.

Je vais simplement formater les colonnes et insérer une note. Merci pour votre contribution.

bonjour Bliblablou le forum

Tu peux nous mettre ton fichier anonymisé, avec dans une page les 5 ou 6 numéro EAN 13 que tu souhaites coller

et joindre le fichier que je teste cela mais pour moi c'est possible

a+

Papou

Re bliblablou le forum

voilà tu as un fichier joint, tu l'ouvres tu lis et tu testes et tu me redis j'ai mis les codes à copier en Feuil3 et la copie tu la fait en feuil1

et tu verras que cela fonctionne parfaitement

a+

Papou

8bliblablou-v1.xlsm (16.13 Ko)

Merci beaucoup ! Je comprends d'où vient le problème.

En fait il y a un problème dans mon fichier car je tente de coller dans un tableau. A ce moment , c'est grisé. Mais si je colle sous le tableau, je peux coller. Je vais supprimer le tableau car il n'est pas utile en fait. Merci encore pour ton aide !

Re Bliblablou le forum

bon alors une affaire classée??

a+

Papou

Rechercher des sujets similaires à "format personnalise"