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
Bonsoir tous le monde, forum bonsoir,

Voila je souhaiterai demarrer mes tests a partir des colonnes C2😀2 et H2:I2
en allant vers le bas 65536 ou plus
le code fonctionne sauf le rangement, alors si vous avez 2 ou 3 minutes pour dire ce que je dois ecrire pour que ca marche alors j'en serai ravi. petit fichier pour voir le code on peut modifier pas de soucis, la ligne - if not intersect(target etc) qui n'est pas bien coder hum

excel 2007

Merci d'avance et vous souhaite la bonne soirée

Raymond
 

Pièces jointes

Re : Petit souci de code

Bonsoir Eliot,

Même si je ne comprends pas trop ce que tu veux faire exactement avec la ligne en rouge ci-dessous pour la syntaxe, cela fonctionne, même si la hiérarchie des If Else then est obscure.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    With Target
        If Not Application.Intersect(Range("C:D,H:I"), Target) Is Nothing And Target.Count = 1 Then
            Application.EnableEvents = False
            If Len(.Value) > 7 Or Len(.Value) = "" Then
                .ClearContents
                .Select
               [COLOR=red]If .Value >= "0" And .Value <= "9" Or .Value = "€" Or .Value = "," Then[/COLOR]
            Else
                .ClearContents
                .Select
            End If
            Application.EnableEvents = True
        End If
    End With
End Sub

A+
 
Re : Petit souci de code

Bonsoir Eliot, Hasco,

Même sentiment d'être allé à l'aventure 🙄

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range, Cell As Range
Set Plage = Range("C2😀18,H2:I18")
If Not Intersect(Target, Range("C2😀18,H2:I18")) Is Nothing Then
For Each Cell In Plage
If Len(Cell) > 7 Or Len(Cell) = "" Then
Cell.ClearContents
ElseIf Cell > "0" And Cell <= "9" Or Cell = "€" Or Cell = "," Then
Cell.ClearContents
End If
Next Cell
End If
End Sub

Cordialement

Bernard
 
Re : Petit souci de code

Bonsoir Hasco forum bonsoir,

tout d'abord merci d'avoir regarder le code, je debute en VBA et je souhaiterai effectuer un test sur les colonnes C2😀2 et H2:I2 a partir ligne 2 car la premiere est prise pour les titres, juste laisser entrer les chiffres, la virgule, et l'euro ainsi que la longueur.
j'ai essayer le code que tu as mis mais j'ai erreur de compilation ""end with sans with""

voila j'ai fouiner sur le site et reussir a faire ca en debutant


En tout cas merci c'est sympa, si tu peut me dire ce qui ne va pas

a te relire Raymond
 
Re : Petit souci de code

Bonsoir CbernardT et tous le monde,

merci bien d'avoir regarder le code les explications sont dans la reponse d' Hasco
je souhaiterai placer le bon code qui me permette de tester les colonnes C2😀2 et H2:I2 en allant vers le BAS avec ton code ca marche juste sur la ligne 2 c'est toutes les colonnes qu'il me faut tester.

merci beaucoup et bonne soirée

raymond
 
Re : Petit souci de code

Re, Eliot,

Pour une prise en compte de toutes les cellules des lignes des quatre colonnes, j'ai changé la définition de la plage.

Pour ls conditions à toi de les mettre en place ou de les définir correctement !

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range, Cell As Range, Derlig As Integer
Derlig = UsedRange.Rows.Count
Set Plage = Range("C2😀" & Derlig, "H2:I" & Derlig)

If Not Intersect(Target, Plage) Is Nothing Then
For Each Cell In Plage
If Len(Cell) > 7 Or Len(Cell) = "" Then
Cell.ClearContents
ElseIf Cell > 0 And Cell <= 9 Or Cell = "€" Or Cell = "b" Then
Cell.ClearContents
End If
Next Cell
End If
End Sub

Cordialement

Bernard
 
Re : Petit souci de code

Bonjour CbernardT, bonjour forum,

Je tient a te remercier pour le code ca marche tres bien, il me sera tres utile, c'est archiver dans mon classeur.

mais le code autorise tout sauf les chiffres, justement je souhaiterai que SEUL les chiffres de 0 à 9 la virgule et l'euro soit autoriser .

Si tu peux me dire stp ca serai bien sympa en attendant si possible je te souhaite une tres bonne journée

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Plage As Range, Cell As Range, Derlig As Integer
Derlig = UsedRange.Rows.Count
Set Plage = Range("C2😀2" & Derlig, "H2:I2" & Derlig)

If Not Intersect(Target, Plage) Is Nothing Then
For Each Cell In Plage
If Len(Cell) > 7 Or Len(Cell) = "" Then
Cell.ClearContents
ElseIf Cell > 0 And Cell <= 9 Or Cell = "€" Or Cell = "," Then
Cell.ClearContents
End If
Next Cell
End If
End Sub

Merci raymond
 
Re : Petit souci de code

Bonjour Eliot,

Essayes avec cette syntaxe :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Derlig As Integer
Derlig = UsedRange.Rows.Count
Set Plage = Range("C2😀" & Derlig, "H2:I" & Derlig)

If Not Intersect(Target, Plage) Is Nothing Then
If Target >= 0 And Target <= 9 Or Target = "€" Or Target = "," Then
Target.ClearContents
End If
End If
End Sub

Cordialement

Bernard
 
Re : Petit souci de code

Bonjour Eliot, Bernard, le forum,

@peut être que je me trompe mais j'ai une interprétation de ta demande un peu différente de celle de notre ami Bernard, pour la condition

Avec les lignes ci-dessous le contenu de la cellule ne peut qu'être numérique ou vide. Pour le € et la ',' un format fera l'affaire. Pas besoin de le saisir.

Code:
If Not IsNumeric(Target) then 
Application.EnableEvents=False 'Pour que l'évènement Change ne soit pas rappelé
Target.ClearContents
Application.EnableEvents=True 'Rétablir la gestion des évènements 
End If

A+
 
Re : Petit souci de code

Re salut Cbernardt

Bon ca marche bien depuis hier avec les codes fait par toi et Mr Hasco j'ai reussi a faire marcher tout ca donc merci beaucoup a vous deux c'est sympa d'aider ceux qui débutent.j'avance bien mais faut ce qu'il faut.
Néanmoins dernier petit soucis, je souhaiterai que cela fonctionne uniquement dans les colonnes a partir de la ligne C2 - D2 et H2 - I2 et PAS LES COLONNES E G F qui ont un autre role.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Derlig As Integer, Plage As Range
Derlig = UsedRange.Rows.Count

Set Plage = Range("C2😀2" & Derlig, "H2:I2" & Derlig)

merci de me dire apres ca devrai etre bon bon app
raymond
 
Re : Petit souci de code

Re Eliot,

Ce qui me parait ambigü c'est :

SEUL les chiffres de 0 à 9 la virgule et l'euro soit autoriser

Est-ce à dire que tu ne veux que des nombre de 0 à 9 ou tout simplement des nombres quelqu'ils soient?

Pour cette dernière option les lignes que je t'ai données devraient le faire, avec un format monétaire ou personnalisé avec le signe "€".

A+
 
Re : Petit souci de code

Re Eliot,

Essayes avec cette syntaxe :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Derlig As Integer, Plage As Range
Derlig = UsedRange.Rows.Count
Set Plage = Union(Range("C2😀" & Derlig), Range("H2:I" & Derlig))
If Not Intersect(Target, Plage) Is Nothing Then
If Target >= 0 And Target <= 9 Or Target = "€" Or Target = "," Then
Target.ClearContents
End If
End If
End Sub

Cordialement

Bernard
 
Re : Petit souci de code

re Hasco,

oui je voulais ce bout de code qui va me servir un peu de passe partout pour un autre programme en projet.
voila pourquoi et uniquement que dans les colonnes C D H I seuls les chiffres autoriser soit 0 1 2 3 4 5 6 7 8 9 la virgule l'euro et test modifiable pour LEN

actuellement tout fonctionne grace a vous deux

Mais pour les colonnes E G F la NON ca doit fonctionner normalement

merci bien j'espere avoir ete plus clair si plus d'infos je suis a disposition

A + tard raymond
 
Dernière édition:
- 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
1
Affichages
1 K
F
Réponses
8
Affichages
3 K
F
P
  • Question Question
Réponses
3
Affichages
1 K
F
Réponses
10
Affichages
2 K
fan2foot
F
L
Réponses
1
Affichages
986
Retour