Correspondance valeur colonne excel

Résolu
lolotiboutik -  
lolotiboutik Messages postés 9 Statut Membre -
Bonsoir,
J'utilise microsoft excel et je travaille sur un fichier unique avec 36000 valeurs sous forme de code dans la première colonne. Après avoir extrait 100 fichiers excel issus de ce fichier initial (par méthode d'échantillonnage), j'ai des valeurs de classement pour chaque code de départ mais sur un tiers des codes soit 12000. Mon souci je voudrais avoir une méthode automatique pour faire correspondre les codes issus de chaque fichier d'échantillonnage avec les codes totaux de départ. A la main ça me prendrait énormément de temps sachant j'aurai 100 fois à faire correspondre 12000 codes parmi les 36000 du fichier de base. J'espère j'ai été clair lol Merci d'avance pour toute éventuelle début de solution.

11 réponses

  1. lolotiboutik
     
    je précise que j'ai collé sur le fichier initial à coté des 36000 codes les colonnes 'codes' et 'valeur classement' de chaque fichier soit 200 colonnes.
    0
  2. Raymond PENTIER Messages postés 58226 Date d'inscription   Statut Contributeur Dernière intervention   17 490
     
    Si tu as été clair ?
    * tu as 36000 données (ou codes) dans une colonne
    * tu as des valeurs de classement, sur des bases qu'on ignore, pour 12000 des données, mais on ne sait pas lesquelles
    * tu as 100 fichiers, mais on ne sait pas quelles données et quelles valeurs de classement y figurent, ni quelle est leur structure
    * tu veux faire correspondre des éléments des 100 fichiers aux 24000 données non encore renseignées, mais on ne sait pas sur quels critères ou en appliquant quelles règles
    * il est aussi question de "codes totaux de départ", dont on ne sait pas s'ils font partie des 36000 ou s'ils s'y rajoutent
    ....................
    0
  3. lolotiboutik
     
    ok désolé je vais apporter plus de précision dans ce cas.
    Les 36000 codes correspondent à des pixels crées suite a une analyse par maille. Je cherche à classifier ces pixels selon l'importance de l'urbanisation dans la région concernée. Pour cela j'ai réalisé un échantillonnage (100 fois) en prenant en compte une quarantaine de variable (situation sociale, salaire, etc) pour avoir une classification moyenne de chaque pixel. La précision c'est que l'échantillonnage n'est réalisé que sur 1 tiers des 36000 pixels et ce pour les 100 fichiers de sorties.
    C'est pour cela j'ai a faire correspondre les 12000 pixels classifiés avec la valeur correspondante a 100 reprises.
    J'espere que c'est plus précis cette fois ;-)
    0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Si tu déposais un fichier exemple avec des explications sur cijoint.fr (coller ici le lien fourni), on ne sait toujours pas ce que tu veux...
    eric
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lolotiboutik
     
    OK voici un exemple du fichier avec les résultats d'un seul fichier de sortie.

    http://www.cijoint.fr/cjlink.php?file=cj201003/cijq3SPkEx.xls
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bon, ben on verra ça quand tu seras décidé à donner toutes les explications...
      Pas envie de passer du temps pour que tu dises que ce n'est pas ça que tu veux mais...
      On ne peut que faire des suppositions !!!
      0
    2. lolotiboutik
       
      si tu as regardé le fichier que j'ai envoyé je veux juste mettre cote a cote les codes pixels identiques des colonnes A et C avec la valeur de classement associée. Il y aura des pixels qui seront pas associés par conséquent (36000 pour la colonne A et 12000 pour la colonne C)
      Quelles sont les autres explications que tu attend?
      0
    3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Oui c'est ça que j'attend
      insérer des cellules en C,D,E pour aligner L100-C1 2004 de A4:B4 avec L100-C1 2004 C3:D3
      Faire correspondre c'est très vague et ne décris pas les actions manuelles que tu fais...
      0
  7. Raymond PENTIER Messages postés 58226 Date d'inscription   Statut Contributeur Dernière intervention   17 490
     
    OK.
    Je ne me sens pas du tout inspiré par ce problème : je me retire donc de la discussion. Bon courage à vous ...
    0
  8. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Le traitement est un peu long, attendre...
    Sub aligne()
        Dim lig As Long
        Application.ScreenUpdating = False
        For lig = 2 To [A65536].End(xlUp).Row
            If Trim(Cells(lig, 1)) <> Trim(Cells(lig, 3)) Or Cells(lig, 2) <> Cells(lig, 4) Then
                Cells(lig, 3).Resize(1, 3).Insert Shift:=xlDown
            End If
        Next lig
        Application.ScreenUpdating = True
    End Sub

    eric
    0
    1. lolotiboutik
       
      désolé pour le retard de la réponse! je viens de rentrer du boulot à l'instant! ok j'essayerai demain matin a mon travail la manip que tu m'a donnée !
      Merci beaucoup d'ore et déjà
      0
    2. lolotiboutik
       
      je te tiendrai au courant si ça marche ou pas ;-)
      0
  9. lolotiboutik
     
    Bonjour Eric,
    J'ai essayé ta manip elle fonctionne parfaitement à un détail qu'elle s'arrete a la ligne 14106 la correspondance. Il doit juste avoir un ajustement a faire dans la VBA. Je te donne le lien du fichier avec la VBA.
    http://www.cijoint.fr/cjlink.php?file=cj201003/cij0qJieSd.xls
    Merci
    Laurent
    0
  10. lolotiboutik Messages postés 9 Statut Membre
     
    il manque juste une un ajustement pr que le pb soit complètement résolu merci d'avance
    0
  11. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    J'ai relancé à partir de cette ligne et aucune anomalie. Tu as peut-être fait une action qui a réussi a arreter la macro (?)
    J'ai ajouté un test de façon à pouvoir relancer la macro sans toucher aux lignes déjà traitées si ça se reproduit.

    Une référence en C (et l'année) doit toujours être sur une ligne <= à la référence en A.
    Une référence en C doit toujours être existante en A.
    Si ces 2 conditions sont respectées aucune raison que ça ne tourne pas

    J'ai ajouté aussi un compteur dans la barre d'état (en bas à gauche) pour voir évoluer le traitement et patienter.

    Sub aligne()   
        Dim lig As Long, derlig As Long   
        Application.ScreenUpdating = False   
        barreEtatsav = Application.DisplayStatusBar   
        Application.DisplayStatusBar = True   
        derlig = [A65536].End(xlUp).Row   
        For lig = 2 To derlig   
            If Trim(Cells(lig, 1)) <> Trim(Cells(lig, 3)) Or Cells(lig, 2) <> Cells(lig, 4) Then   
                If Cells(lig, 3) & Cells(lig, 4) <> "" Then   
                    Cells(lig, 3).Resize(1, 3).Insert Shift:=xlDown   
                End If   
            End If   
            Application.StatusBar = "Ligne en cours : " & lig & "/" & derlig   
        Next lig   
        Application.StatusBar = False   
        Application.DisplayStatusBar = barreEtatsav   
        Application.ScreenUpdating = True   
    End Sub

    eric

    PS : n'oublie pas de mettre en résolu si ça l'est. Merci
    0
    1. lolotiboutik Messages postés 9 Statut Membre
       
      c bon je viens de réessayer ca a marché jusquau bout cette fois je pense jai du faire une manip qui a stopper en cours la macro
      merci bcp vraiment
      0
    2. lolotiboutik Messages postés 9 Statut Membre
       
      par contre j'ai pas la barre a coté de 'ne plus suivre' pour mettre la discussion comme résolue
      0
  12. lolotiboutik Messages postés 9 Statut Membre
     
    c bon ca marche c réglé :-)
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      ok, je met en résolu
      @+
      0