Rechercher un nom et effectuer deux actions différentes en fonction du résultat

Signaler
Messages postés
14
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
10 août 2010
-
Messages postés
14
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
10 août 2010
-
Bonsoir à tous,

Je butte completement sur une macro (pour moi assez compliquée) et je ne trouve pas la solution.

Je cherche à enregistrer la participation de plusieurs personnes (mes contacts) à une serie d'évènements.
Pour cela, j'ai un UserForm qui reprend (dans des labels et des textboxs) les informations basiques de ma personne. Ensuite j'ai une combobox avec la liste de mes évènements, avec une case à cocher pour valider la présence de la personne.
Les informations rentrées dans le UserForm vont s'implanter dans un onglet, dans une colonne différente selon le nom de l'évènement sélectionné. Jusqu'ici tout va bien, la macro marche bien, se décale selon le choix de l'évènement et écrit yes si la case est cochée.
Ce que je voudrais arriver à faire, c'est qu'avant de reporter les infos du Userform dans l'onglet (il se met sur la dernière ligne vide normalement), c'est qu'il teste la colonne du Nom de la personne, vérifie si cette personne existe déja dans la colonne, et si c'est pas le cas, alors sélectionner la dernière ligne, mais si le nom de la personne existe déja, alors sélectionner son nom et implémenter les nouvelles infos sur la même ligne!

ma macro est la suivante:
rivate Sub CommandButton1_Click()
Sheets("XX").Select
Dim Nom As Integer
Dim target As Range, cell As Range
Do

Set Nom = UserForm6.Label21.Caption
Set target = Columns(5).Find(nom, xlWhole)

If target Is Nothing Then

Dim line As Integer
line = Range("a65530").End(xlUp).Row + 1
Range("a" & line).Select

Selection.Value = UserForm2.TextBox1.Value
Selection.Offset(0, 1).Select
ActiveCell.Value = UserForm2.ComboBox1.Value
Selection.Offset(0, 1).Select
ActiveCell.Value = UserForm2.TextBox2.Value
Selection.Offset(0, 1).Select
ActiveCell.Value = UserForm4.ComboBox1.Value
Selection.Offset(0, 1).Select
ActiveCell.Value = UserForm4.TextBox2.Value
Selection.Offset(0, 1).Select

If UserForm6.ComboBox1.Value = Sheets("XX").Range("F1").Text Then ActiveCell.Select
If UserForm6.ComboBox1.Value = Sheets("XX").Range("I1").Text Then Selection.Offset(0, 3).Select
If UserForm6.ComboBox1.Value = Sheets("XX").Range("L1").Text Then Selection.Offset(0, 6).Select


' a dit qu'il viendrait?
If UserForm6.CheckBox1.Value True Then ActiveCell.Value "yes"
    Selection.Offset(0, 1).Select

'est venu?
If UserForm6.CheckBox2.Value True Then ActiveCell.Value "yes"
Selection.Offset(0, 1).Select

'Commentaires
ActiveCell.Value = UserForm6.TextBox1


Else
cell.Select

If UserForm6.ComboBox1.Value = Sheets("PRESENCE").Range("F1").Value Then Selection.Offset(0, 1).Select
If UserForm6.ComboBox1.Value = Sheets("PRESENCE").Range("I1").Value Then Selection.Offset(0, 4).Select
If UserForm6.ComboBox1.Value = Sheets("PRESENCE").Range("L1").Value Then Selection.Offset(0, 7).Select


If UserForm6.CheckBox1.Value True Then ActiveCell.Value "yes"
    Selection.Offset(0, 1).Select

If UserForm6.CheckBox2.Value True Then ActiveCell.Value "yes"
Selection.Offset(0, 1).Select

ActiveCell.Value = UserForm6.TextBox1

Unload UserForm6

End If
Loop
End Sub



Si quelqu'un repère le morceau qui n'est pas correct,...Merci beaucoup d'avance pour votre aide!

Miniboo

4 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
Bonjour,

1) que sont tous ces vilains Select ? Apprends à t'en débarrasser (en te référant directement à la cellule à modifier). Cette manière (à la hussarde) de travailler est lourde, lente et gourmande
2) ouvre ton aide en ligne sutr la méthode Find et applique-là (-pour ce qui est de l'aspect recherche).

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
14
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
10 août 2010

Bonjour,

Merci pour ton message, mais j'avoue ne pas savoir faire autrement qu'avec des .select en partant d'une Activecell...(je suis débutante!)

Je n'ai pas réussi à trouver la solution avec l'aide en ligne, je suis encore plus embrouillée!

En fait, j'ai maintenant une erreur 'objet requis" sur ma variable "Nom" et je pense que mes parametres ne sont pas bien définis...

Je cherche encore...

Merci pour ta réponse

Miniboo
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
débutante ou non, c'est là une chose facile à comprendre !

Range("a" & line).Select
Selection.Value = UserForm2.TextBox1.Value

par exemple, s'exprime ainsi :
Range("a" & line).value = UserForm2.TextBox1.Value


Quant à ton erreur sur la variable nom, elle montre là encore la nécessité de combler de sérieuses lacunes de base :
regarde ce que tu as écrit :
Set Nom = UserForm6.Label21.Caption

Or UserForm6.Label21.Caption (un string) ne saurait être un objet (ce que définit un set) !
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
14
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
10 août 2010

Ok merci, j'ai bien compris ces deux choses là maintenant, je vais devoir reprendre les bases!
Merci