formule pour dire appartient à

alexletiti

XLDnaute Nouveau
bonjour,
j'ai un programme et je voudrais que excel vérifie avant tout si la valeur existe.
Voici le programme :
Public Sub prog1()
nom = InputBox('Donner le nom de l'utilisateur')
For Each x In Range('A:A')
If IsEmpty(x) Then
Exit For
End If
n = n + 1
plage = n
if nom appartient range('A:A')
If nom = x Then
x = x.Offset(0, 1)
MsgBox 'l'utilisateur ' & nom & ' appartient au groupe ' & x
End If
elseif nom n'appartient pas a range('A:A')
MsgBox 'cet utilisateur n'existe pas !!'
End If
Next
End Sub

J'espère que vous pourrez m'aider.
a+
 

Hervé

XLDnaute Barbatruc
Bonjour

pas tout compris, mais bon je me lance :

ta macro modifié :

Public Sub prog1()
Dim x As Range
Dim nom As String, adresse As String
Dim n As Integer, plage As Integer
Dim bon As Boolean

bon =
False
nom = InputBox('Donner le nom de l
'utilisateur')
If nom = '' Then Exit Sub
For Each x In Range('A1:A' & Range('a65536').End(xlUp).Row)
    n = n + 1
    plage = n
   
If x = nom Then bon = True: adresse = x.Address(0, 0)
Next x

If bon = True Then
    MsgBox 'l
'utilisateur ' & nom & ' appartient au groupe ' & Range(adresse).Offset(0, 1)
   
Else
MsgBox 'cet utilisateur n
'existe pas !!'
End If

End Sub


et une autre facon de faire plus courte et plus rapide :

Public Sub vev()
Dim nom As String
Dim x As Range

nom = InputBox('Donner le nom de l
'utilisateur')
If nom = '' Then Exit Sub
Set x = Columns('a:a').Find(nom, LookAt:=xlWhole)

If Not x Is Nothing Then
    MsgBox 'l
'utilisateur ' & nom & ' appartient au groupe ' & x.Offset(0, 1)
Else
    MsgBox 'cet utilisateur n
'existe pas !!'
End If

End Sub


salut
 

Hervé

XLDnaute Barbatruc
Bonjour

ci-joint les macros, avec explications :

Public Sub prog1()
'declaration des variables
Dim x As Range
Dim nom As String, adresse As String
Dim n As Integer, plage As Integer
Dim bon As Boolean

'un boolean est une sorte d'interrupteur qui ne peut accepter que vrai ou faux (true ou false)
'ici on indique que la boolean bon est faux
bon =
False
'on demande le nom à chercher, et on le stock dans la variable nom
nom = InputBox('Donner le nom de l
'utilisateur')
'si nom est vide, on quitte la macro
If nom = '' Then Exit Sub
'pour chaque X dans la plage A1:A jusqu'à la derniere cellule non vide
For Each x In Range('A1:A' & Range('a65536').End(xlUp).Row)
   
'on incremente n
    n = n + 1
    plage = n
   
'si le nom est trouvé alors on bascule l'interrupteur à vrai et on stock
   
'l'adresse de la cellule X
   
If x = nom Then bon = True: adresse = x.Address(0, 0)
'sinon on continue la boucle
Next x
'si l'interrupteur bon est vrai
If bon = True Then
   
'alors on envoi un message positif
    MsgBox 'l
'utilisateur ' & nom & ' appartient au groupe ' & Range(adresse).Offset(0, 1)
'sinon
Else
'on envoi un message négatif
MsgBox 'cet utilisateur n
'existe pas !!'
'fin de condition avec l'interrupteur
End If

End Sub


Public Sub vev()
'déclare les variables
Dim nom As String
Dim x As Range
'on demande le nom à chercher, et on le stock dans la variable nom
nom = InputBox('Donner le nom de l
'utilisateur')
'si nom est vide, on quitte la macro
If nom = '' Then Exit Sub
'on recherche le nom dans la colonne A et on stock le résultat de la recherche dans X (adresse de la cellule résultat)
Set x = Columns('a:a').Find(nom, LookAt:=xlWhole)
'si x n'est pas vide, alors
If Not x Is Nothing Then
   
'alors on envoi un message positif
    MsgBox 'l
'utilisateur ' & nom & ' appartient au groupe ' & x.Offset(0, 1)
'sinon
Else
   
'on envoi un message négatif
    MsgBox 'cet utilisateur n
'existe pas !!'
End If

End Sub


Voilà, hésites pas en cas de problème.

Salut
 

Discussions similaires

Réponses
0
Affichages
118