code vbA ou autres pour limiter nombre de caractere d une cellule

  • Initiateur de la discussion Initiateur de la discussion AKSooL
  • 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 !

AKSooL

XLDnaute Occasionnel
BOnjour

j avais essayé via une validation de limiter le nombre de caractere , mais j ai vu que cela pouvait se contourner en faisant un copier coller d une autre cellule vers ma cellule en question.
Donc y a t il un code ou autre pour empecher le copier / coller si le nombre de caractere est superieure a 12, ou empecher la cellule d accepter plus de 12 caracteres soit par ecrit, soit par copier coller .

Merci
 
Re : code vbA ou autres pour limiter nombre de caractere d une cellule

Bonsoir AKSooL,

Voici une macro très simple qui annule toute entrée dans la cellule A1 si le nombre de caractère est supérieur à 12. A placer dans le code de la feuille (clic droit sur l'onglet et visualiser le code) :

Code:
Private sub Worksheet_Change(ByVal Cel As range)
Set Cel = Intersect(Cel, Range("A1"))
If Cel Is Nothing Then Exit Sub
If Len(Cel) > 12 Then Msgbox "Maximum 12 caractères": Application.Undo
End Sub

Si au lieu de A1 vous voulez contrôler une plage, englobez le dernier test dans une boucle :
For Each Cel In Cel...Next.

A+
 
Dernière édition:
Re : code vbA ou autres pour limiter nombre de caractere d une cellule

Bonsoir AKSooL,

Voici une macro très simple qui annule toute entrée dans la cellule A1 si le nombre de caractère est supérieur à 12. A placer dans le code de la feuille (clic droit sur l'onglet et visualiser le code) :

Code:
Private sub Worksheet_Change(ByVal Cel As range)
Set Cel = Intersect(Cel, Range("A1"))
If Cel Is Nothing Then Exit Sub
If Len(Cel) > 12 Then Msgbox "Maximum 12 caractères": Application.Undo
End Sub

Si au lieu de A1 vous voulez contrôler une plage, englobez le dernier test dans une boucle For Each...Next.

A+


puis je eventuellement mettre range("A1:A9999") ?
si oui ou non , est ce que ta macro marchera meme si le fichier est partagé

Merci en tout cas
 
Re : code vbA ou autres pour limiter nombre de caractere d une cellule

Re,

Pas de problème pour la plage, voir mon post précédent que j'ai précisé pour la boucle For Each...

Pour le partage de fichier, je n'en sais rien, mais je ne vois pas pourquoi il y aurait un problème.

A+
 
Re : code vbA ou autres pour limiter nombre de caractere d une cellule

Bonsoir AKSooL, job75,

Pas sûr que la macro en partage sur réseau fonctionne... mais je n'ai plus de réseau à disposition pour tester.

De mémoire, j'ai rencontré ce type de problème et cela ne fonctionnait pas en réseau et en partage.

Bon We à tous.

Jean-Pierre
 
Re : code vbA ou autres pour limiter nombre de caractere d une cellule

Bonjour,

Je reprends cette discussion car elle correspond exactement au problème que je rencontre… avec dans mon cas, une petite variante sur laquelle je bloque depuis 2 jours.

Ce que je cherche à réaliser, c'est de limiter le nombre de caractères dans différentes cellules, avec différentes limites du nombre de caractères suivant la cellule. Pour être plus clair, voici ce que j'aimerais obtenir :

- Dans un module j'aurais un code comme celui-ci (dans l'idée) :
Code:
Option Explicit
Public Liste01() As String, Liste02() As String, Liste03() As String

Sub TestLen()
        Liste01() = Split("E7,E8,E10,E11", ",")
        Call Worksheet_Change
        
        Liste02() = Split("E9,E12", ",")
        Call Worksheet_Change
        
        Liste03() = Split("E6,E13,E14", ",")
        Call Worksheet_Change
End Sub

- Dans le code de "Feuil1" je n'arrive pas du tout à mettre en œuvre 3 boucles pour limiter le nombre de caractères à (par exemple) 200 pour la Liste01(), 300 pour la Liste02() et 350 pour la Liste03()…

Les Liste01, Liste02 et Liste03 seront amenées à changer souvent dans différentes Sub…

Voilà, j'espère que quelqu'un comprendra mon souci et pourra m'aider ; je suis perdu !

Merci par avance 😉
 
Re : code vbA ou autres pour limiter nombre de caractere d une cellule

Bonjour Gloubiboulga, bienvenue sur XLD,

Mettez vos 3 listes dans un seul Array, idem pour les maxima :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Liste, maxi, i%, r As Range
Liste = Array("E7:E8,E10:E11", "E9,E12", "E6,E13:E14")
maxi = Array(200, 300, 350)
For i = 0 To UBound(Liste)
  Set r = Intersect(Target, Range(Liste(i)))
  If Not r Is Nothing Then
    For Each r In r
      If Len(r.Text) > maxi(i) Then
        MsgBox "Maximum " & maxi(i) & " caractères"
        Application.Undo
        Exit Sub
      End If
    Next
  End If
Next
End Sub
Edit : j'ai ajouté Exit Sub, même s'il n'est pas indispensable c'est mieux.

A+
 
Dernière édition:
Re : code vbA ou autres pour limiter nombre de caractere d une cellule

Bonjour Gloubiboulga, le forum,

Vous n'obtiendrez probablement plus de réponse.

Votre code est bien inutilement compliqué.

Et il n'a vraiment pas sa place dans cette discussion.

A+
 
Re : code vbA ou autres pour limiter nombre de caractere d une cellule

Re,

Deux conseils :

- simplifiez votre code en utilisant des méthodes plus classiques

- ouvrez une nouvelle discussion en joignant un fichier et en expliquant clairement ce que vous voulez faire.

A+
 
Re : code vbA ou autres pour limiter nombre de caractere d une cellule

Ah…*ok… c'est juste que j'ai (sans le vouloir) "pollué" cette discussion… Ouf…

Merci. Je m'en vais donc suivre vos 2 conseils, même si aujourd'hui je n'arriverai à suivre que le second ! 😀
 
- 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
14
Affichages
590
Réponses
3
Affichages
704
Retour