une macro pour organiser ma base de donnée

machoucha

XLDnaute Nouveau
salut à tous,
J'ai 2 feuilles excel du même classeur.
Dans la première feuille (nommée F1) , j'ai 6 colonnes. la colonne D contient un ensemble de code en chiffre.

Dans la deuxième feuille (nommée F2), j'ai 7 colonnes. la colonne D contient également un ensemble de code en chiffre

Mon problème consiste à déterminer pour chaque code inscrit dans la feuille 1 (F1), la ligne de la feuille 2 (F2) ayant le même code que dans la feuille 1 (F1). autrement dit extraire la ligne de la feuille 2 correspondante au code d'achat de la feuille 1 sachant que certains code de la feuille 1 ne se trouvent pas dans la feuille 2 (cad dans la colonne D de la feuille 2). si le code de la feuille F1 ne se trouve pas dans la feuille F2 dans ce cas je vais copier la ligne (de F2) juste avant (c-à-d ayant le code juste avant) dans la feuille F1.

Bon j'ai essayé d'utiliser la macro suivante (elle m'a donné aucun résultat et elle ne traite pas le cas ou le code de F1 ne s'affiche pas dans F2) :
Option Explicit
Sub Test()
Dim Ws1 As Worksheet
Dim Ws2 As Worksheet
Dim DerLig1 As Long, DerLig2 As Long
Dim Cel As Range, MaPlage1 As Range, MaPlage2 As Range, Valeur As Range

Set Ws1 = Worksheets("F1")
Set Ws2 = Worksheets("F2")
DerLig1 = Ws1.Range("D" & Ws1.Rows.Count).End(xlUp).Row
DerLig2 = Ws2.Range("D" & Ws2.Rows.Count).End(xlUp).Row
Set MaPlage1 = Ws1.Range(Ws1.Range("D2"), Ws1.Range("D" & DerLig1))
Set MaPlage2 = Ws2.Range(Ws2.Range("D2"), Ws2.Range("D" & DerLig2))

For Each Cel In MaPlage1
Set Valeur = MaPlage2.Find(Cel, LookIn:=xlValues)
If Not Valeur Is Nothing Then
MsgBox "Le contrat " & Cel & " a été trouvé à l'adresse " & Valeur.Address & " de la feuille F2"
End If
Next

Set Ws1 = Nothing
Set Ws2 = Nothing
End Sub

J'aimerai bien trouver une macro qui m'aiderai à réorganiser mes données. J'en ai besoin.

Merci
 

ROGER2327

XLDnaute Barbatruc
Re : une macro pour organiser ma base de donnée

Bonjour machoucha



En attendant une procédure en VisualBasic, et compte tenu que les valeurs de la colonne D de la feuille F2 sont uniques, la formule
Code:
=SOMMEPROD(('F2'!$D$1:$D$232=D1)*LIGNE('F2'!$D$1:$D$232))
collée dans une cellule de la première ligne de la feuille F1, puis recopiée vers le bas, renverra 0 si la référence correspondante en colonne D n'existe pas dans la feuille F2, ou le numéro de la ligne de la feuille F2 dans laquelle se trouve la dite référence.​



ROGER2327
#5450


Jeudi 12 Gueules 139 (Saint Membre, compilateur - fête Suprême Quarte)
17 Pluviôse An CCXX, 5,9560h - lichen
2012-W06-1T14:17:40Z
 

pierrejean

XLDnaute Barbatruc
Re : une macro pour organiser ma base de donnée

Bonjour machoucha

Salut Roger

Un essai (en cas de non trouvé inscription en rouge pour la recherche du precedent)
 

Pièces jointes

  • Dat.xls
    102 KB · Affichages: 64
Dernière édition:

machoucha

XLDnaute Nouveau
Re : une macro pour organiser ma base de donnée

Bonjour machoucha

Salut Roger

Un essai (en cas de non trouvé inscription en rouge pour la recherche du precedent)

bonjour PierreJean,

J'ai essayé la macro que vous m'avez donné et j'ai bien vérifié les résultats obtenus. J'ai constaté que la macro fonctionne bien seulement j'ai un petit problème dans la deuxième partie de la boucle. Dans le fichier Dat1 ci joint, Feuille F1, ligne 131 (coloré en rose), le code D131 de F1 ne se trouve pas dans la feuille F2 (colonne D) dans ce cas je dois trouver et copier le code de la feuille 2 le plus proche mais inférieure de celui de F1 c-à-d je dois copier la ligne 77 de la feuille 2. La macro me donne la ligne 74 de F2 (couleur vert de F2). J'ai essayé de résoudre le problème mais je ne trouve pas de solution. Sachant que je dois effectuer le même travail sur d'autres fichiers Pourriez vous m'aider s'il vous plait à résoudre ce problème.
Merci
 

machoucha

XLDnaute Nouveau
Re : une macro pour organiser ma base de donnée

Re

Vois si cette fois j'ai mieux compris

Re,
Je vous remercie PierreJean de m'avoir répondu. J'ai exécuté la macro et j'ai vérifie les résultats. Malheureusement, le problème persiste encore. Comme vous pouvez le remarqué, dans les feuilles F1 et F2, la première colonne (A) "Date " est de la forme jjmmaaaa alors que la deuxième colonne (B) "Time" est de la forme hhmmss. F1 et F2 ont la même troisième colonne "SH" (725001). La première partie de la boucle fonctionne parfaitement. Seulement le problème qui reste à résoudre est le suivant: lorsque le code (colonne D) de F1 ne se trouve pas dans F2: on dois essayer de trouver dans F2 la ligne correspondante et de la copier dans F1 c-à-d on dois extraire de F2, la ligne qui à la même date que celle de F1, un même "SH" alors que le "Time" (colonne B) de la ligne de F2 doit être strictement inférieure et la plus proche de Time (colonne B) de la ligne de F1.
Remarque: -le code est de la forme SH&Date&Time,
-le code de F1= le code de F2 signifie que la ligne de F1 et la ligne de F2 ont le méme "Date", même "Time" et même "SH".
Prenant à titre d'exemple dala Date 1.xlsm: pour la ligne numéro196 (couleur bleu) de F1 ( le code (D196) est 72500103092008101918 et C196 =101918), la ligne de F2 correspondante est la ligne numéro 132 (couleur bleu) dont le code est 72500103092008101610 et un Time C132=101610 < 101918. On remarque que ligne numéro 196 de F1 et la ligne 132 de F2 ont la même Date 03092008.
la macro a affiché la ligne numero 86 ayant une date A86 "02092008" qui est différente de celle de F1.
De même pour la ligne numéro 175 (couleur gris), sa correspondante dans F2 est la ligne numéro 115.
J’espère que j'ai bien expliqué le problème.
Je vous remercie d'avance pour votre aide.
Cordialement,
machoucha
 

Discussions similaires

Réponses
1
Affichages
248
Réponses
3
Affichages
153
Réponses
13
Affichages
910

Statistiques des forums

Discussions
312 243
Messages
2 086 544
Membres
103 244
dernier inscrit
lavitzdecreu