Doublons et Recherches

B

Bruno

Guest
Bonjour à toutes et à tous,

Quel merveilleux site. J'ai pratiquement tout appris de vous. Malgrès tout, je reste néophyte.

Une fois encore, je vous sollicite car je suis dépassé par la chose et je m'emmèle les pinceaux.

Dans un programme créant une base de données et imprimant les résultats sur des mises en page spéciales, je rencontre deux problèmes.

Le premier, sont les DOUBLONS. J'ai quelques lignes qui me permettent de na pas avoir de doublons sur la première colonne (par exemple), et qui me met la cellule à vide si le cas se présente. Par contre, si j'ai plus de renseignements, les cellules suivantes de la même ligne acceptent et gardent les données. Donc quand je mets un bon matricule (car il sagit de lister du personnel), il se place bien dans la cellule mais les données suivantes sont crées en double sur la ligne d'après (puisque déjà crées au dessus).Ce qu'il faudrai en fait, c'est que quand mon matricule est doublonné, la ligne complète s'efface, comme ça, impossible de prendre les données de Mr X pour celles de Mr Y.

Le deuxième problème, c'est qu'après avoir entrées ces données, j'aimerai aller les rechercher par Mtrl ou par Nom ou encore par adresse afin de pouvoir éventuellement réimprimer les proformats (contrats, déclaration mutuelle, ect...)

Je vous remercie par avance de bien vouloir m'aider pour finaliser mon projet.


Bonne soirée

Bruno
 
Y

yolène

Guest
exemple pour effacer les cellules à partir d'une cellule sélectionnée


ActiveCell.Range("A1:E1").Select
Selection.ClearContents

dans cet exemple :
A correspond à la colonne de la cellule sélectionnée
1 correspond à la ligne de la cellule sélectionnée
E dans ce cas correspond à la cellule qui se trouve 5 cellules à droite sur la même ligne.


B correspondant à la 2è cellule à droite
C " " " " "
etc...

donc la zone A1:E1 est sélectionnée et tu peux l'effacer

J'espère que j'ai réussi à me faire comprendre.
Bonne journée
 
Y

yolène

Guest
Je ne sais pas si c'est la façon la plus élégante mais celle que je pratique et elle fonctionne, donc voici :
pour une liste de matricules se trouvant dans la colonne A d'une feuille
exemple ci-dessous pour les adresses ou autres renseignements changer la colonne et l'intitulé et titre de la boite de saisie.


sub recherchematricule()
Matricule = InputBox("Entrer le n° matricule", "N° MAMTRICULE")
Range("A2").Select
Set Nbvaleurs = Range("A2", [A2].End(xlDown))
Nbvaleurs = Nbvaleurs.Count

Range("A2").Select
Do While ActiveCell <> Matricule
For valeur = 1 To Nbvaleurs
If ActiveCell = Matricule Then

'(à cet endroit tu remplace ce petit message suivant par la macro qui te permet d'imprimer ta fiche, ou du moins les lignes qui correspondent à cette opération)
MsgBox "imprimer la fiche"

Else
ActiveCell.Offset(1, 0).Select
End If

Next valeur
Loop
End Sub
 
Y

yolène

Guest
Jene peux pas t'envoyer de fichier car je n'arrive pas à formater mon fichier pour l'envoyer.
En relisant ton courrier pour ce qui est de récupérer les données dans une feuille modèle à imprimer
Les lignes ci-dessous font référence à 2 feuilles - Feuil1 cotenant la liste
Feuil2 qui est le modèle
Tu nommes la zone qui comporte les données ou la base de donnée pour y faire reférence dans tes recherches.

Tu nomme toutes les cellules qui doivent comporter des renseignements dans ta feuille modèle : par exemple cellule A1 doit comporter le matricule la nommer par exemple mod_matricule , cellule C1 doit comporter l'adresse la nommer mod_adresse... etc..

la macro suivante envoie une boite ou tu saisie le matricule qui est entré ensuite dans la feuil2 (modèle) à la cellule mod_matricule, puis recherche l'adresse correspondante et la met dans la cellule C1, du peux ajouter des renseignements dans d'autres cellules mais tu dois rajouter une ligne recherchev pour chaque chaque cellule à renseigner en changeant seulement la cellulenommée et le numéro de la colonne.
Tu peux appliquer cette procédure aussi pour les adresses en l'adaptant mais la colonne adresse doit être la première dans la feuil1.




Dim matricule As String
matricule = InputBox("Entrer le n° matricule", "N° MAMTRICULE")
Sheets("Feuil1").Select
Range("A2").Select
Set Nbvaleurs = Sheets("Feuil1").Range("A2", [A2].End(xlDown))
Nbvaleurs = Nbvaleurs.Count
Sheets("Feuil1").Select
Range("A2").Select
Do While ActiveCell <> matricule
For valeur = 1 To Nbvaleurs
If ActiveCell = matricule Then
Sheets("Feuil2").Select
Range("A2").Select
ActiveCell.FormulaR1C1 = matricule
Range("c2").Select

' la ligne ci-dessous est la formule de recherche, il faut en rajouter autant que de cellule à renseigner et changer le nom de la cellule(mod_adresse) et la colonne où

ActiveCell.FormulaR1C1 = "=VLOOKUP(mod_adresse,bdd,2,0)"

' pour la ligne ci-dessous tu la remplace par ta macro "impression" par 'exemple.
MsgBox "remplacer ce message par la macro de l'impression"

End

Else
ActiveCell.Offset(1, 0).Select
End If

Next valeur
Loop
End Sub



bon courage
 
B

Bruno

Guest
Bonsoir ts le monde,

Chère Yolène,

j'ai testé tes lignes avec mon prog. J'ai pas de pot, ça ne fonctionne pas comme je le voudrai. En outre, testé avec un autre listing, c'est génial. Je garde donc l'info pour un autre projet.

Pour l'heure, je vais chercher sur le forum ce que je peux trouver. J'ai un mémo de Celeda sur les doublons, mais je rame un peu. Je vais voir directement avec Céleda.

Merci encore et a charge de revanche ...

Bruno
 

Statistiques des forums

Discussions
312 699
Messages
2 091 109
Membres
104 763
dernier inscrit
SAMI FADLI