Petite traduction en VBA...
Résolu/Fermé
Anthelm
Messages postés
198
Date d'inscription
lundi 15 octobre 2018
Statut
Membre
Dernière intervention
2 mars 2024
-
20 nov. 2018 à 22:47
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 - 23 nov. 2018 à 21:32
Anthelm Messages postés 198 Date d'inscription lundi 15 octobre 2018 Statut Membre Dernière intervention 2 mars 2024 - 23 nov. 2018 à 21:32
A voir également:
- Petite traduction en VBA...
- Traduction photo gratuit - Guide
- Vba l'indice n'appartient pas à la sélection - Forum VB / VBA
- Quelle est la traduction en français du mot dont les 3 caractères unicode sont 6276 624b 6905 ? ✓ - Forum Programmation
- Aivia traduction - Guide
- Vba range avec variable ✓ - Forum VB / VBA
3 réponses
jordane45
Messages postés
38109
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 mars 2024
4 634
21 nov. 2018 à 00:05
21 nov. 2018 à 00:05
Bonsoir,
'déclenche la macro quand une valeur de la feuille change Private Sub Worksheet_Change(ByVal Target As Range) Dim Rng As Range Set Rng = ActiveSheet.Range("G2:R2") 'Vérifie si dans la plage choisie If Not Application.Intersect(Target, Rng) Is Nothing Then 'verifie si la valeur existe déjà dans la plage ValueToSearchFor = Target.Value 'récupère la valeur saisie If Application.CountIf(Rng, ValueToSearchFor) > 1 Then MsgBox "La valeur " & ValueToSearchFor & " existe déjà" End If End If End Sub
eriiic
Messages postés
24569
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
14 mars 2024
7 209
21 nov. 2018 à 10:42
21 nov. 2018 à 10:42
Bonjour,
une proposition qui t'affiche la liste épurée des items déjà présents.
Créer une listbox sous la ligne de titres et :
https://www.cjoint.com/c/HKvjPHqC6ZU
eric
une proposition qui t'affiche la liste épurée des items déjà présents.
Créer une listbox sous la ligne de titres et :
Private Sub ListBox1_Click() ActiveCell.Value = ListBox1.Text End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim c As Range If Not Intersect(Target, [A2:E2]) Is Nothing Then With ListBox1 .Left = Target.Left .Clear .AddItem For Each c In [liste] If Application.CountIf([A2:E2], c.Value) = 0 Then .AddItem c.Value Next c .Visible = True End With Else ListBox1.Visible = False End If End Sub
https://www.cjoint.com/c/HKvjPHqC6ZU
eric
Anthelm
Messages postés
198
Date d'inscription
lundi 15 octobre 2018
Statut
Membre
Dernière intervention
2 mars 2024
1
23 nov. 2018 à 21:32
23 nov. 2018 à 21:32
Bonjour eric, désolé d'avoir mis autant de temps à répondre. J'ai bien noté ta solution et j'essaye d'approfondir cette histoire de listbox. Merci du conseil en tout cas, c'est peut être ça la solution en effet.
Je me fait quelques tutos concernant les listbox et j'essayerais :)
Merci beaucoup
Je me fait quelques tutos concernant les listbox et j'essayerais :)
Merci beaucoup
Anthelm
Messages postés
198
Date d'inscription
lundi 15 octobre 2018
Statut
Membre
Dernière intervention
2 mars 2024
1
21 nov. 2018 à 00:20
21 nov. 2018 à 00:20
Non effectivement ça marche mais dans la mesure ou c'est un tableau, l'entête prend un indice 2 avant le déclenchement de la macro :'(
Le message d'erreur n’empêche pas la saisie mais ça c'est moi qui n'en avait pas parlé...!
Le message d'erreur n’empêche pas la saisie mais ça c'est moi qui n'en avait pas parlé...!
21 nov. 2018 à 00:12
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A3:AN502")) Is Nothing Then
Range("S1").Value = Target.Row
End If
End Sub
'déclenche la macro quand une valeur de la feuille change
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range
Set Rng = ActiveSheet.Range("G2:R2")
'Vérifie si dans la plage choisie
If Not Application.Intersect(Target, Rng) Is Nothing Then
'verifie si la valeur existe déjà dans la plage
ValueToSearchFor = Target.Value 'récupère la valeur saisie
If Application.CountIf(Rng, ValueToSearchFor) > 1 Then
MsgBox "La valeur " & ValueToSearchFor & " existe déjà"
End If
End If
End Sub
Et j'ai bien une ligne entre les deux. ça devrait marcher, non?