BeebopMcFly
Messages postés23Date d'inscriptionmercredi 25 février 2004StatutMembreDernière intervention 5 septembre 2006
-
2 janv. 2006 à 11:25
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 2022
-
4 janv. 2006 à 00:08
Bonjour, et tous mes voeux à toutes et à tous !!
Et voilà le premier (léger) problème pour 2006, je dispose de cellules excel, dans lequels j'aimerais limité le nombre de caratères alphanumériques à l'intérieur, afin d'éviter de futur bugs^^
J'ai également d'autres cellules ou il doit avoir une valeur alternative OUI ou NON, et d'autre 1 ou 2
Voilà si vous pouriez m'aidez, ça vous constiturais surement la première Bonne Action pour 2006
Merci !!
Bop
A voir également:
Cellule Excel limitée à 25 caractères / limitée à "Oui" ou "Non"
cs_chapata
Messages postés214Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 9 avril 20105 2 janv. 2006 à 12:03
So ...
passons par une boucle ...
for i = 1 to 50 'ou le nb de cellule à controler
if len(range("C" & i &"") > 25 then msgbox "plus de 25 ... dans la cellule C" & i: exit sub 'car ton programme devra s'arréter je pense
next
Voili voilou
*********** Si cette réponse vous convient, merci de valider ce post ***********
cs_chapata
Messages postés214Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 9 avril 20105 2 janv. 2006 à 11:36
Hello ,
limité le nb de caractère dans une cellule ... je dirais 2 possibilité :
passe par les fonctions d'excel directement ... (NBCAR) mais cela n'empchera pas l'utilisateur d'en mettre 26, c'est juste une info, donc inutile si tu veux bloquer le nb de carac
ou (il me semble que celle-ci est plus approprié)
if len(selection) > 25 then
msgbox "Plus de 25 caractères"
else
'mon traitement ....
end if
Pour ce qui est de oui ou non :
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Oui,Non" 'ou ce que tu veux séparer par des virgules
.IgnoreBlank = True
.InCellDropdown = True
.ErrorMessage = "Valeur Incorrect"
End With
*********** Si cette réponse vous convient, merci de valider ce post ***********
BeebopMcFly
Messages postés23Date d'inscriptionmercredi 25 février 2004StatutMembreDernière intervention 5 septembre 2006 2 janv. 2006 à 11:45
Salut Chapata,
Dans ton code, tu me dis "if len(selection) > 25 then"
Je vais avoir une colonne (de 50 lignes) à contrôler avec les mêmes contraintes, c à dire que "C1:C50", chaque cellule ne doit pas dépasser 25 caractères.
Un "if len("C1:C50") > 25 then" marcherais pour chacune de mes cellules de la sélection ??
(en tout cas, ton code semble répondre à mo, atte,te, pas encore testé )
cs_chapata
Messages postés214Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 9 avril 20105 2 janv. 2006 à 13:42
déjà un problème de réglé ...
tu peux aussi faire directement :
With Range("D5").Validation
au lieu de pré-sélectionner la cellule ... par range("D5").select, plus rapide ...
et si tu as plusieurs cellule ... boucle ...
par contre au niveau du prob avec "with" ...essai de mettre le code directment dans une sub à part pour voir s'il fonctionne ? car je ne vois pas d'où peut venir le prob. (sorry)
BeebopMcFly
Messages postés23Date d'inscriptionmercredi 25 février 2004StatutMembreDernière intervention 5 septembre 2006 2 janv. 2006 à 14:30
J'ai essayé dans une nouvelle procédure pour le with..... marche tjs po
J'ai aussi utilisé With Range("D5").Validation...... non plus
Mais peut être, je dois déclarer un objet validation non ?? A vrai dire, c'est la première fois que j'utilise cette clause, et à part avoir taper le code en brut, je n'ai fait aucune déclaration...
Tu saurais comment la clause Validation fonctionne ?? (l'aide vba est pauvre, leur exemple plente également, et je n'ai pas accès à msdn...)
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20223 4 janv. 2006 à 00:08
Lut,
voici un but de code pour commencer
' On part sur le principe que tes plages sont nomées comme ceci
' OuiNon pour les plages dont la valeur doit être oui ou non
' To1Or2 pour les plages dont la valeur doit être 1 ou 2
' Max25 pour les plages dont la longueur doit être de 25 max
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = "" Then Exit Sub
If IsCellInRange(Target, "OuiNon") Then
If Target.Value <> "oui" And Target.Value <> "non" Then
Target.Value = "": MsgBox "entrez oui ou non comme valeur"
End If
ElseIf IsCellInRange(Target, "To1Or2") Then
If Target.Value <> 1 And Target.Value <> 2 Then
Target.Value = "": MsgBox "entrez 1 ou 2 comme valeur"
End If
ElseIf IsCellInRange(Target, "Max25") Then
If Len(Target.Value) > 5 Then
Target.Value = Right(Target.Value, 5)
End If
End If
End Sub
Function IsCellInRange(Rng As Range, RangeName As String) As Boolean
On Error Resume Next
IsCellInRange = _
Not (Application.Intersect(Rng, Range(RangeName)) Is Nothing)
End Function