Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
796 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  excel aide macro pr comparer des lignes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

excel aide macro pr comparer des lignes

n°1005491
chocolat10​0
Posté le 08-03-2005 à 16:12:38  profilanswer
 

Bonjour, je cherche à comparer des lignes d'une feuille excel, et à fusionner des lignes excels en fonction d'une clé qui est dans la colonne A. J'ai fait un algorythme qui part du principe d'une double boucle toute simple, mais je ne connais absolument rien en VSB pour pouvoir le traduire.
Ca donne quelquechose comme ça:
 

Citation :


 
 
 
 
pour variable(a)=2 to 5000
variable(ah)=0  
variable(ai)=0
variable(ao)=0
si case(Hvariable(a))<>vide alors variable(ah)=1
si case(Ivariable(a))<>vide alors variable(ai)=1
si case(Ovariable(a))<>vide alors variable(ao)=1
 
    pour variable(b)=variable(a)+1 to 5000
    variable(bh)=0
    variable(bi)=0
    variable(bo)=0
    si case(A-variable(a)) = case(Avariable(b)) alors     si case(Hvariable(b))<>vide alors variable(bh)=1
   si case(Ivariable(b))<>vide alors variable(bi)=1
                si case(Ovariable(b))<>vide alors variable(bo)=1
 
                si variable (ah)=0 et si variable(bh)=1 alors copier(cases Gvariable(b);cases Hvariable(b)) et les coller dans (cases Gvariable(a);cases Hvariable(a))  
 cases GàHvariable(b)="DEPLACE"
   
                si variable(ai)=0 et si variable(bi)=1 alors copier(cases IàNvariable(b)) et les coller dans (cases IàNvariable(a))
 cases IàNvariable(b)="DEPLACE"
 
                si variable(ao)=0 et si variable(bo)=1 alors copier(cases OàVvariable(b)) et les coller dans (cases OàVvariable(a))
cases OàVvariable(b)="DEPLACE"
 
 
 
variableb=variableb+1
 
variable a=a+1


 
bon, je sais, c'est peut etre pas tres compehensible, mais je suis pas un pro, loin de là.
alors si quelqu'un peut me dire comment faire pour rendre cette "macro" comprehensible en language visual basic pour excel.
Par avance, merci.

mood
Publicité
Posté le 08-03-2005 à 16:12:38  profilanswer
 

n°1007473
AlainTech
Pas trouvé? Cherche encore!
Posté le 09-03-2005 à 22:41:56  profilanswer
 

C'est vrai que je ne comprends pas.
Il faudrait voir la feuille avec son contenu et le résultat que tu cherches à obtenir.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1007620
chocolat10​0
Posté le 10-03-2005 à 01:14:03  profilanswer
 

Je cherche à comparer des lignes d'une feuille excel.
Chaque ligne va de la case A à la case V.
La case A est la concataination des cases BàF, possede une valeur pour toutes les lignes.
Pour chaque ligne, soit il y a des valaur danss les cases  G et H, soit dans les cases IJKLMN, soit dans les cases OPQRSTUV.
Je veux regrouper toutes ces données sur une même ligne pour une même valeur de la colonne A, mais il y a des exception, une valeur de la colonne A peut correspondre à une ou plusieurs lignes, jusqu'a six, et il ne faut pas perdre de données.
 
La feuille comporte 5000 lignes
 
J'ai fait un algorythme qui part du principe d'une double boucle toute simple.
La premiere boucle va de la premiere ligne à la derniere ligne de la feuille
La deuxieme boucle compare la premiere ligne avec les lignes suivantes de la feuille
 
 
Si les cases H de la 1ere ligne est vide et que la case H de la deuxieme ligne ne l'est pas alors je deplace les cases G et H de la deuxieme ligne à la premier et je note "deplacé" dans les cases G et H de la deuxieme pour garder une trace du deplacement.
De même je compare les cases I entre elles pour deplacer les cases IJKLMN de la deuxieme ligne à la premiere.
Les cases O pour les cases OPQRSTUV
 
Après je ferai un tri tout bête pour reperer les erreures et effacer tous les "deplacé" qui sont dans les cases GàV, mais ce sera une autre histoire (ça je sais faire)
 
Pour aider à la lecture de mon algorythme, voici mes abreviations
<>                   different de  
variable(a)          le nom d'une variable
case(Avariable(a))   case A2 si variable(a)=2
 
 
J'espere être une peu plus clair.
Merci.


Message édité par chocolat100 le 10-03-2005 à 01:22:49
n°1007801
galopin01
Posté le 10-03-2005 à 10:34:31  profilanswer
 

bonjour,
la macro suivante fait un regroupement, je pense que c'est à peu près ce que tu veux.

Code :
  1. Option Base 1
  2. Sub Test()
  3. Dim Tablo(22), iNbCol%, iLastR%, i%, j%, x%, vReq, iTrouv%
  4. Application.ScreenUpdating = False
  5. iNbCol = 22
  6. iLastR = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row
  7. For i = 1 To iLastR
  8.   For x = 1 To 22
  9.   Tablo(x) = Cells(i, x).Value
  10.   Next
  11. Set vReq = Range("A" & i & ":A" & iLastR).Find(Tablo(1))
  12.   If Not vReq Is Nothing Then
  13.     Do
  14.     iTrouv = vReq.Row
  15.     For j = 1 To 22
  16.        With Cells(iTrouv, j)
  17.         If Tablo(j) = .Value Then
  18.           If j <> 1 Then
  19.             If .Value <> "" Then
  20.             .Interior.ColorIndex = 8
  21.             .Value = ""
  22.             End If
  23.           End If
  24.         ElseIf Tablo(j) = "" And .Value <> "" Then
  25.         Tablo(j) = .Value
  26.         .Interior.ColorIndex = 8
  27.         .Value = ""
  28.         ElseIf Tablo(j) <> "" And Tablo(j) <> .Value Then
  29.         If .Value <> "" Then .Interior.ColorIndex = 3
  30.         End If
  31.         Cells(i, j).Value = Tablo(j)
  32.      End With
  33.      Next
  34.     Set vReq = Range("A" & i & ":A" & iLastR).FindNext(vReq)
  35.     iTrouv = vReq.Row
  36.     Loop While Not vReq Is Nothing And iTrouv <> i
  37.   End If
  38. Next
  39. End Sub


Les déplacements sont colorés en bleu.
Les erreurs en rouge.
 
A+


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  excel aide macro pr comparer des lignes

 

Sujets relatifs
executer une macro en commande dos[Excel] débutant cherche à comparer des dates...
[VB]Manip fichier Excel+chemin depuis VBAide flash MX
Un petit code php a modifié (5 lignes) lisez tous c'est intéressant :)[J2ME] Besoin d'aide pour une Liste ????
Comparer 2 colonnes sous excelAidez-moi Macro Excel comparer 2 colonnes
Plus de sujets relatifs à : excel aide macro pr comparer des lignes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR