STOP à 15 caractères !

T

thombar

Guest
Bonjour, y a t'il un moyen pour que dans une plage de cellule, on limite la saisie à 15 caractères dans chacune d'elles.

De façon plus précise :
Pour que rien n'apparaisse lorsque l'on veut entrer le seizième caractère dans la cellule active... que le curseur n'avance plus.

merci de votre aide !!!
 
S

salim

Guest
Bonne nuit tout le Monde

José ça y est je l'ai retrouver @+Thierry as Capitaine Flam et sa bande de copain et même sa petite amie LOL.

flam.gif


cyberlabe.gif


futuremen.gif



joan3.gif



@+ Salim
 
@

@+Thierry

Guest
Hi hi hi Merci Salim,

Bon alors j'ai retrouvé... Mais niet pour ce cas de figure... Sur un UserForm un ActiveX CommandButton peut avoir la Propriété Défault = True, pas sur un ActiveX CommandButton OLEObject... Snif...

Alors je me suis rabattu sur l'évènement de TextBox "KeyPress" mais là par contre cet événement KeyPress ne se déclenche pas lorsque l'utilisateur appuie sur TAB, ENTRÉE, Une touche de directionn, Une touche qui déplace le focus d'un contrôle à un autre... Arf...... Re Snif !

Enfin bon je ne désespère pas, avec les ressources que nous avons sur XLD...

Sinon pour la même chose sur UserForm, il suffit de mettre CommandButton hors zone d'affichage du UserForm et de lui attribuer la Propriété Défault = True... Puis un code comme ceci....... Et hop !!! Finger In the Noze !!!

Private Sub CommandButtonDefault_Click()
Dim CTRLArray As Variant

For Each CTRLArray In Array(TextBox1, TextBox2, TextBox3, TextBox4, _
                         TextBox5, TextBox6, TextBox7, TextBox8)

  If CTRLArray.Value = "" Then
   On Error Resume Next
   CTRLArray.SetFocus
   Exit Sub
  End If

Next CTRLArray
End Sub

Bonne nuit à tous et toutes
@+Thierry
 
T

thombar

Guest
Bonjour,

Très content de voir que vous aimez les challenges, et d'avoir ameuté autant de monde !! Surtout les extraterrestre de la bande.

En simple petit scarabée que je suis, j'ai testé les petits fichiers attachés, et à chaque fois que je veux entrer un sixième caractère, j'ai le message suivant : Runtime error 1004 - Activate method of OLEObject class failed et me propose de débugger cette ligne :

If Len(Me.OLEObjects("TextBox" & Num).Object.Text) > 4 Then Me.OLEObjects("TextBox" & Num + 1).Activate


Je fais peut-être pas ce qu'il faut.....;-)
 
@

@+Thierry

Guest
DEMO sur OLEObjects en Boucle avec Activate

Bonjour Thombar, le Fil, le Forum

Ah tiens c'est très embêtant comme message le Run Time Error 1004... Je viens de re-tester ce fichiers sous Win XP Pro, Office XP Pro et tout fonctionne.

J'ai developpé ce programme sous Win 2000 / Office 2000, hier soir je l'ai testé de chez moi sous Win Me / Office 2000 sans problème non plus...

Donc j'en arrive à des questions ?

1) Quelle Version d'Excel Utilises-tu ? (Windows aussi)
2) Quand tu dis "j'ai testé les petits fichiers attachés" on parle bien des fichiers tel quel, sans aucune tentative d'adaptation sur un autre classeur ?

Pour faire avancer le Schmiliblic, deux petites choses :

1) Si il y a quelqu'un qui me lit et qui travaille sous Excel 97... si il peut essayer un des fichiers (le mien ou la version de Yeahou, ça n'a pas d'importance) et nous dire si il n'a pas le même "trouble" que Thombar...

2) Si Thombar peut faire un essai tout simple sur un classeur vierge, il dessine deux TextBox ActiveX (Barre d'Outils Contrôles) il s'assure qu'elle se nomme bien respectivement "TextBox1" et "TextBox2" par un click droit en mode Design et "Propriété"... Puis il met ce code dans le Private Module de la Feuille où se trouve les deux TextBox et met ce code :
Private Sub TextBox1_Change()
Me.OLEObjects("TextBox2").Activate
End Sub
Puis il tape un caractère dans la TextBox1...

Si ça ne passe pas il essaie ceci aussi depuis un module standard
Sub ActivateTextBox2()
ActiveSheet.OLEObjects("TextBox2").Activate
End Sub

Et si c'est encore un fiasco, on essaie ceci :
Sub KillTextBox2()
ActiveSheet.OLEObjects("TextBox2").Delete
End Sub

Enfin on verra bien...

Bon Appétit
@+Thierry
 
J

jmps

Guest
Bonjour (ou Re, je sais plus) @+Thierry, yeahou, thombar,

J'ai essayé sur XL97/Win98. Même problème que thombar.
Erreur 1004
La méthode Activate de la classe OLEObject à échoué.
Puis debug sur la ligne :

If Len(Me.OLEObjects("TextBox" & Num).Object.Text) > 4 Then Me.OLEObjects("TextBox" & Num + 1).Activate

Je regarde si je peux vous être utile avec ma version. Mais laissez-moi le temps de comprendre votre code d'outre-Voie Lactée ;°))

José
 
J

jmps

Guest
Bon ben je sèche...

L'erreur se trouve bien après le then. D'ailleur le message est clair : C'est la méthode Activate qui échoue.

J'ai essayé différentes choses :
- Mettre le nom en dur au lieu de la concaténation
- Mettre l'index au lieu du nom
- Enlever OLEObjects (= Me.TextBox2.Activate)
Dans ce cas curieusement, j'ai le même message parlant de la classe OLEOBjects.
- Si on fait ? Me.OLEObjects(1).Name dans la fenêtre exécution, ça passe. Idem pour la méthode .Select.
Donc j'en conclus que l'objet est bien reconnu.

En fouinant un peu, j'ai trouvé un doc chez microsoft (LiseXL8.doc). Je vous joint un extrait qui parle des OLEObjects. Enfin un peu en rapport (voir le tableau à l'intérieur). Peut-être que ça peut vous donner des pistes.

Good luck les amis.

José
 

Pièces jointes

  • LisezXL8.zip
    3.7 KB · Affichages: 12
J

jmps

Guest
Tiens, curieux j'avais pas remarqué.
Le message dit classe OLEObject (sans s), alors que la classe est bien avec un s. J'ai essayé d'enlever le s, mais j'ai une erreur de compilation.

Serait-ce en rapport ?

José
 
M

michel

Guest
bonjour Thombar , José , @+Thierry, Salim ,Yeahou ,Yvon ,Eric et Pascal


à mon avis , pour Excel97 pas de résultat sans "Select" , ( comme lors de l'utilisation des CommandButton )

Private Sub TheBloodyDigitInExcess(Num As Byte)
'testé avec excel97,Win95
If Num < 50 Then
If Len(Me.OLEObjects("TextBox" & Num).Object.Text) > 4 Then
Range("A1").Select
Me.OLEObjects("TextBox" & Num + 1).Activate
End If
Else
If Len(Me.OLEObjects("TextBox" & Num).Object.Text) > 4 Then
Range("A1").Select
Me.OLEObjects("TextBox1").Activate
End If
End Sub


bon apres midi
michel
MichelXld
 
J

jmps

Guest
Re la moitié du Forum (Je cite pas les noms, c'est trop long LOL !)

Champion du monde Michel !
Ca marche sur 97...

Comme dirait @+Thierry, on te décerne le label XLD Compliant !

Big Merci. Encore une énigme résolue par XLD LOL !

Bonne soirée.

José
 
@

@+Thierry

Guest
Bonjour Michel, et la Moitié du Forum !!! (l'autre moitié est déjà parti en Wouikend ou Wouacances)

Arf oui c'est encore à coup de Select qu'il marche ce vieux machin, et pourtant, Michel, tu me l'avais déjà dit et même adapté certaines de mes démos... Mais le temps passe et depuis il y a encore eu une nouvelle version d'Office !

Un jour, on en sera à la Version Excel XPerIntraSensorial 2010 et on aura qu'à viser une cellule avec les yeux pour que VirtualBrainApplicator la traite (je l'ai vu en beta test démo sur Pluton lol), mais on aura encore quelqu'un qui aura besoin d'un Select parcequ'il est sous ce bon vieux Excel 97 !

Et merci à toi Michel !! et comme on dit en Belgique l'Union Fait La Force !

Bon Wouik Hand à tous et toutes
@+Thierry
 
J

jmps

Guest
Salut Temjeh et l'hémisphère sud de la planète XLD,

Pour l'instant, le record il est plutôt Lien supprimé sans vouloir te décevoir. LOL !

Livre Guiness des records bientôt ?

Allez, je lance le concours de l'été avant de partir en vacances.
Une pinte de bière Guiness à celui ou celle qui trouve le fil le plus long sur XLD !
Les règles du jeu sont déposées chez Maître Kanter, huissier sur Pluton. Disponible sur demande à cette adresse : [mail]eygenraam.thierry@laposte.net[/mail] ;°))
Evidemment : jeu sans obligation d'achat. LOL !

Bonne chance les amis.

José
 
J

jmps

Guest
Bon, vacances nécessaires voire indispensables.

Je voulais un lien qui affiche @+Thierry en bleu souligné.

Ratée ma blague.

Je sais je m'en remets une couche....

A mon retour j'imprime la FAQ et je la mange.

José
 

Discussions similaires

Statistiques des forums

Discussions
312 300
Messages
2 087 000
Membres
103 429
dernier inscrit
PhilippeH