Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
AutresLimiter 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 !
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
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
En G3 tu mets le nombre de caractères que tu veux
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
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
En G3 tu mets le nombre de caractères que tu veux
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
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
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
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
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
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
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
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.
- 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