Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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


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...

saralht

XLDnaute Nouveau
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
 

patricktoulon

XLDnaute Barbatruc
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
 

saralht

XLDnaute Nouveau
Merci.
Possible d'avoir plus de précisions sur la marche à suivre pour intégrer cette macros stp ?
 

Phil69970

XLDnaute Barbatruc
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


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

Je t'ai perdu ??
 

Phil69970

XLDnaute Barbatruc
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
 

saralht

XLDnaute Nouveau
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
 

Phil69970

XLDnaute Barbatruc
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


Merci de ton retour
 

saralht

XLDnaute Nouveau
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
 

Discussions similaires

Réponses
2
Affichages
207
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…