Paufiner ce code svp

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 !

eliot raymond

XLDnaute Occasionnel
Bien le bonjour a tous et toutes, Forum

Voila ce petit code fonctionne bien, mais je souhaiterai un petit plus SVP.

Comment inserer au bon endroit un code qui ferai que je ne puisse passer a la colonne E que si la colonne D est renseignée.

Ici que des chiffres de 0 à 9 c'est tout D2 a D27

Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As String
Application.EnableEvents = False
With Target '**Test colonne D2😀27 uniquement chiffres
If Not Intersect(Target, [D2😀27]) Is Nothing And Not (IsEmpty(Target)) Then

For i = 1 To Len(Target)
z = Mid(.Value, i, 1)
If InStr("0123456789", z) = 0 Then Err = 1: Exit For
Next i
.Offset(0, 3).Select
If Err = 1 Or Len(Target) > 7 Then .ClearContents: .Select

End If
End With
Application.EnableEvents = True
End Sub

Merci bien d'avance, si vous avez 3 minutes de libre
Bonne journée a tous

Raymond
 
Re : Paufiner ce code svp

Bonjour,

A tester ... pour savoir si cela répond exactement à la situation ...
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim z As String
Dim i As Integer
Dim rng As Range
If Target.Count > 1 Then Exit Sub
Set rng = Range("D2:E27")
Application.EnableEvents = False
    With Target
        If Not Intersect(Target, rng) Is Nothing And Not (IsEmpty(Target)) Then
            If .Column = 5 And Not IsEmpty(.Offset(0, -1)) Then
                GoTo line1:
            Else
                .Select
            End If
            For i = 1 To Len(Target)
            z = Mid(.Value, i, 1)
            If InStr("0123456789", z) = 0 Then Err = 1: Exit For
            Next i
        .Offset(0, 1).Select
            If Err = 1 Or Len(Target) > 7 Then .ClearContents: .Select
        End If
    End With
line1:
Application.EnableEvents = True
End Sub

A +
 
Re : Paufiner ce code svp

Bonjour Raymond, bonjour James007,

1 remarques sur le code:

Pourquoi ne pas utiliser la fonction "IsNumeric" au lieu de tester chaque caractère pour vérifier si c'est un chiffre? Cela donnerait:

Code:
If Not Intersect(Target, [D2:D27]) Is Nothing And Not (IsEmpty(Target)) And IsNumeric(Target) Then

Ouups, vite supprimée la bêtise que je venais d'écrire avant que quelqu'un ne la lise!!

@+

Gael
 
Re : Paufiner ce code svp

Bonjour Raymond, bonjour James007,
1 remarques sur le code:
Pourquoi ne pas utiliser la fonction "IsNumeric" au lieu de tester chaque caractère pour vérifier si c'est un chiffre? Cela donnerait:

Code:
If Not Intersect(Target, [D2:D27]) Is Nothing And Not (IsEmpty(Target)) And IsNumeric(Target) Then

Ouups, vite supprimée la bêtise que je venais d'écrire avant que quelqu'un ne la lise!!

@+

Gael

Bonjour Gael,

Perso, je n'ai fait qu'ajouter la modif demandée et quelques déclarations de variables ...
Je suis tout à fait d'accord avec ta remarque ...
A +
 
Re : Paufiner ce code svp

Bonjour James007, forum,

Merci Mister Bond, ca marche bien, MAIS je suis apercu en l'essayant !!!

comment faire actuellement ca marche, mais on peut sortir de la colonne D par ENTER ou par les touches de direction. faudrai les bloquer aussi je pense, peut'on palier a ça SVP

BUT : une fois dans la colonne D ne sortir que si la cellule contient 7 chiffres

si une idée, et merci pour tout car cela fait plusieurs que tu m'aides

Raymond
 
Re : Paufiner ce code svp

Content que cela ait pû résoudre ton problème ...

Quant à ta seconde question ... avec Excel, sincèrement tout est possible ...
ceci dit, si tu dois écrire tout ce code pour des utilisateurs, il serait judicieux de voir si une UserForm ne ferait pas mieux l'affaire ...

A +
 
Re : Paufiner ce code svp

Pour ta connaissance de VBA, il existe la possibilité d'intervenir sur les touches du clavier en les bloquant ou leur faisant effectuer une autre tâche que celle prévue initialement ...
Mais je te recommande de n'attaquer ces questions qui sont un peu plus délicates que les autres ... que dans un second temps ...

A +
 
Re : Paufiner ce code svp

Re,

Une solution peut-être en utilisant le verrouillage de cellules et la protection de la feuille:

Toutes les cellules de la feuille sont verrouillées sauf la colonne D et la feuille n'est pas protégée.

Si lors d'une saisie, les conditions ne sont pas correctes, il suffit de protéger la feuille ce qui interdit de sortir de la colonne D.

Si les conditions sont OK, on déprotège la feuille.

@+

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

Réponses
5
Affichages
932
Retour