[VBA]Comparer une valeur avec une plage de donnee

cs_Gester Messages postés 3 Date d'inscription jeudi 31 mai 2012 Statut Membre Dernière intervention 2 juin 2012 - 1 juin 2012 à 02:19
cs_Gester Messages postés 3 Date d'inscription jeudi 31 mai 2012 Statut Membre Dernière intervention 2 juin 2012 - 2 juin 2012 à 01:58
Bonjour,
J'ai crées une macro qui enregistre la valeur d'une cellule dans une plage_de_donnée dans le but de la faire apparaitre dans une liste déroulante.

Voici le code de la macro :

<Sheets("Libéllé_Etablissement").Select
Rows("3:3").Select
Selection.Insert Shift:=xlDown
Range("A3").Select
Sheets("Saisie").Select
Range("B16").Select
Selection.Copy
Sheets("Libéllé_Etablissement").Select
Columns("A:A").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A2").Select
Sheets("Saisie").Select
Range("A16").Select>

Ce que je souhaite c'est comparer la valeur de la cellule avec la plage de données.
C'est à dire :
Si la valeur de Range("B16") est déjà dans la plage de donnée alors afficher un msgbox("Cet Etablissement a déjà été Enregistrer")
Sinon
Copier la valeur de Range("B16") dans la plage.
Fin

J'ai essayer plusieurs code que j'ai trouvés sur le net mais aucun d'eux ne fonctionne ou peut-être que j'utilise mal.
Merci d'avance à ceux qui me répondront.



Lively Up Yourself

5 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 juin 2012 à 07:18
Bonjour,
Que viens-tu faire dans la présente section :
Forum > VB.NET et VB 2005

VB.Net n'a absolument rien à voir avec VBA !
Prends dorénavant soin d'ouvrir tes discussions VBA dans la section adéquate : Langages dérivés > VBA. C'est important.
Il est également important de présenter son code entre balises code (3ème icône à partir de la droite)
---------------------------
Pour en venir à ton problème VBA :
1) on ne travaille pas à coups de Select,Selection.Copy, etc..., mais directement avec les objets Excel ! Exemple (tout le reste est dans le même cas) :
Sheets("Libéllé_Etablissement").Select
Rows("3:3").Select
Selection.Insert Shift:=xlDown

s'écrit :
Sheets("Libéllé Etablissement").Insert Shift:= xlDown

Quant à :
J'ai essayer plusieurs code que j'ai trouvés sur le net mais aucun d'eux ne fonctionne ou peut-être que j'utilise mal.

Il te faut te débarrasser le plus rapidement possible de cette habitude, au bénéfice de ton propre travail.
On ne voit nulle part, dans le bout de code que tu montres, ce que tu dis vouloir faire !: On ne voit aucune recherche, aucune comparaison !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 juin 2012 à 08:03
Tes explications ne sont par ailleurs pas de la plus grande clarté.
- S'il s'agit finalement d'éviter d'inscrire en colonne B un article en vérifiant qu'il n'y figure pas déjà : ouvre ton aide VBA sur la méthode Find (Range.Find) et applique-la.
- s'il s'agit par contre de dresser une liste sans doublons à partir d'une plage en comportant : puisque tu as trié cette plage, il te suffit de la parcourir à l'aide d'une boucle et de ne retenir une valeur que si non égale à la valeur précédente.
Nous aimerions, dans un cas comme dans l'autre, voir le code tenté dans ce sens. Cela ne justifie nullement des "recherches sur internet", mais tout simplement la lecture de ton aide VBA (méthode Find dans le 1er cas - Boucles For... to ... next dans le second).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_Gester Messages postés 3 Date d'inscription jeudi 31 mai 2012 Statut Membre Dernière intervention 2 juin 2012
1 juin 2012 à 19:52
Merci de tes conseils, j'ai pas l'habitude de me faire remettre à ma place (façon de parler) mais ce sont des conseils très instructifs pour moi. C'était la 1ère fois que j'ai postés un message sur un forum
Je vais revoir ce que je veut vraiment faire et être plus explicite dans mes demandes d'aides. Je vais essayés d'amélioré le programme et la prochaine fois que je vais postés un message je vais le mettre dans la section adéquate.
Merci encore, see ya

L'échec est le premier pas vers la réussite.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 juin 2012 à 21:36
Je suis profondément désolé d'avoir été rude.
Mais c'est là ma façon d'être : je "secoue" autant que je le peux, mais il faut en comprendre la raison profonde : elle est de l'amitié (la vraie).
Je voudrais que tu saches une chose : je suis encore moins tendre à mon propre égard et remercierai toute ma vie mes formateurs divers (je ne parle pas que d'informatique) de m'avoir "secoué" d'entrée de jeu dans divers domaines. Sans eux, je serais encore un "doux rêveur quasi incompétent", à l'hiver de ma vie.
J'aime ta signature. Et oui, il faut également connaître l'échec. Mais Hé oui : il faut le dominer avec ténacité. Et hé oui, il faut tenter au maximum de le faire seul. L'appel au secours n'est nullement condamnable, mais ... seulement après avoir tout essayé par soi-même.
Amitiés.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Gester Messages postés 3 Date d'inscription jeudi 31 mai 2012 Statut Membre Dernière intervention 2 juin 2012
2 juin 2012 à 01:58
Je suis touché par tes propos, ils sont fort en sens et me donne la motivation pour avancé.
Je n'ai pas été vexés par tes propos, bien au contraire je te remercie d'avoir pris de ton temps pour m'avoir répondus de manière ferme et sans insulte.
Dans ton message et dans ta façon de l'avoir écrit j'ai sentis beaucoup de vécus, le vécus d'un homme qui c'est lever et qui ses battus pour gagner ses droits et son respect.

J'ai pris notes de tes conseils, je vais chercher et trouver une solution à mon problème. En attendant porter vous bien et merci encore pour vos conseils.

Sincèrement et Amicalement, Gester.



L'échec est le premier pas vers la réussite.
0
Rejoignez-nous