Autres Limiter le nombre de caractère copiés dans une cellule

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 !

saralht

XLDnaute Nouveau
Bonjour,

Je cherche désespérément un code VBA pour empêcher les utilisateurs de mon fichier Excel de SAISIR ou COLLER plus de 30 caractères dans une cellule.
Je ne maîtrise pas du tout les macros.
Merci beaucoup

EXCEL 2310
 
Solution
Re

@saralht

Le code de la macro
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B3")) Is Nothing Then
    If Len(Target) > Range("G3") Then
        Range("B3").ClearContents
        MsgBox "Trop de caractere maxi " & Range("G3") & " caractères", vbCritical, "Vous avez un problème !"
    End If
End If
End Sub

A mettre ici
1699628768739.png


En G3 tu mets le nombre de caractères que tu veux

1699628835777.png


Pour l'exemple j'ai mis 5
Et en B3 tu fais tout ce que tu veux mais si tu dépasses 5 caractères tu auras un message que cela soit par copier/coller ou directement dans la cellule

Bien sur on peut en modifiant le code et le message pour figer en dur dans le code VBA la longueur...
Merci pour ta réponse. Avec cette méthode, mes utilisateurs peuvent coller plus de caractères. Donc mon objectif est de les empêcher également de coller.
Ma cellule ne devrait pas accepter plus d’un certain nombre de caractère même en copiant collant.

Pour la version, j’ai regardé dans les info mais j’avoue ça m’a paru bizarre aussi 😂😂
 
rre
bonjour
sinon en vba et en plus (en late binding) le dataobject
VB:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
     .GetFromClipboard
           If Len(.GetText(1)) > 30 Then .SetText "": .PutInClipboard
    End With

End Sub
c'est beau la vie non
et si tu veux vraiment enpêcher le collage par les touches
met ce code directement dans le selectchange
 
rre
bonjour
sinon en vba et en plus (en late binding) le dataobject
VB:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
   
    With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
     .GetFromClipboard
           If Len(.GetText(1)) > 30 Then .SetText "": .PutInClipboard
    End With

End Sub
c'est beau la vie non
et si tu veux vraiment enpêcher le collage par les touches
met ce code directement dans le selectchange
Merci.
Possible d'avoir plus de précisions sur la marche à suivre pour intégrer cette macros stp ?
 
Re

@saralht

Le code de la macro
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B3")) Is Nothing Then
    If Len(Target) > Range("G3") Then
        Range("B3").ClearContents
        MsgBox "Trop de caractere maxi " & Range("G3") & " caractères", vbCritical, "Vous avez un problème !"
    End If
End If
End Sub

A mettre ici
1699628768739.png


En G3 tu mets le nombre de caractères que tu veux

1699628835777.png


Pour l'exemple j'ai mis 5
Et en B3 tu fais tout ce que tu veux mais si tu dépasses 5 caractères tu auras un message que cela soit par copier/coller ou directement dans la cellule

Bien sur on peut en modifiant le code et le message pour figer en dur dans le code VBA la longueur du texte en B3

Je t'ai perdu ?? 🤔
 
RE

Et version ou tout est figé dans le code

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B3")) Is Nothing Then
    If Len(Target) > 5 Then  ' A ajuster si besoin
        Range("B3").ClearContents
        MsgBox "Trop de caractere maxi 5 caractères", vbCritical, "Vous avez un problème !"
    End If
End If
End Sub

C'est ici que tu fixes la longueur dans le code
If Len(Target) > 5 Then ' A ajuster si besoin
 
Re

@saralht

Le code de la macro
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B3")) Is Nothing Then
    If Len(Target) > Range("G3") Then
        Range("B3").ClearContents
        MsgBox "Trop de caractere maxi " & Range("G3") & " caractères", vbCritical, "Vous avez un problème !"
    End If
End If
End Sub

A mettre ici
Regarde la pièce jointe 1183424

En G3 tu mets le nombre de caractères que tu veux

Regarde la pièce jointe 1183425

Pour l'exemple j'ai mis 5
Et en B3 tu fais tout ce que tu veux mais si tu dépasses 5 caractères tu auras un message que cela soit par copier/coller ou directement dans la cellule

Bien sur on peut en modifiant le code et le message pour figer en dur dans le code VBA la longueur du texte en B3

Je t'ai perdu ?? 🤔
J'ai testé ce code et ça a l'air de bien fonctionner. C'est magique.
Merci beaucoup
2 petites questions : 1- suis-je obligée d'avoir une cellule de référence ?

2- Comment appliquer la limite à toute une colonne ? puis à plusieurs colonnes
 
Re

@saralht

1)
1- suis-je obligée d'avoir une cellule de référence ?
Réponse voir mon post # 9

2)
2- Comment appliquer la limite à toute une colonne ?
Je te propose ce code qui contrôle toute la colonne B et toujours avec 5 caractères

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
    If Len(Target) > 5 Then  ' A ajuster si besoin
        Target.ClearContents
        MsgBox "Trop de caractere maxi 5 caractères", vbCritical, "Vous avez un problème !"
    End If
End If
End Sub

3)
puis à plusieurs colonnes
Quelle colonne ?
If Not Application.Intersect(Target, Range("B:C")) Is Nothing Then
Dans cet exemple ce sont les colonnes B et C qui sont contrôlés
A toi d'adapter

Perso :
A) Remplir ton fichier risque de devenir un enfer pour l'utilisateur 😵

B) Feuilletonner la question n'est pas bien vu sur le forum car c'est souvent sans fin 🤔
Voir la charte
1699634101426.png


Merci de ton retour
 
Re

@saralht

1)

Réponse voir mon post # 9

2)

Je te propose ce code qui contrôle toute la colonne B et toujours avec 5 caractères

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B:B")) Is Nothing Then
    If Len(Target) > 5 Then  ' A ajuster si besoin
        Target.ClearContents
        MsgBox "Trop de caractere maxi 5 caractères", vbCritical, "Vous avez un problème !"
    End If
End If
End Sub

3)

Quelle colonne ?

Dans cet exemple ce sont les colonnes B et C qui sont contrôlés
A toi d'adapter

Perso :
A) Remplir ton fichier risque de devenir un enfer pour l'utilisateur 😵

B) Feuilletonner la question n'est pas bien vu sur le forum car c'est souvent sans fin 🤔
Voir la charte
Regarde la pièce jointe 1183434

Merci de ton retour
Super je te remercie.
Je suis obligée de définir le nombre de caractères pour 2 colonnes afin que mon fichier soit accepté par mon logiciel de facturation. sinon il ne le reconnait pas.

Tes réponses m'ont beaucoup aidé.

Et merci pour l'info concernant la charte.

Bonne soirée
 
- 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

  • Question Question
Microsoft 365 Formule excel
Réponses
7
Affichages
172
Réponses
12
Affichages
212
Réponses
4
Affichages
223
Retour