IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Aligner des lignes dont les cellules sont identiques


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 20
    Points
    20
    Par défaut Aligner des lignes dont les cellules sont identiques
    Bonjour à tous et merci pour votre aide par avance !

    J'ai deux fichier contenant des colonnes identiques, mais pas en même nombres (+ 41 000 dans un et + 21 000 dans l'autre), je dois faire un rapprochement de ces deux fichiers.
    Ces fichiers doivent être rapproché par la colonne identique et fiable qui s'intitule EAN et je dois mettre en vis-à-vis les EAN identiques.
    D'habitude, je le fais manuellement en mettant cote à cote et classés par la colonne commune les deux fichiers en un. Puis en comparant les deux colonnes communes, j’insère des lignes vides soit à droite, soit à gauche pour que les cellules égales soit en vis-à-vis.
    Vu le nombre cette fois, je ne peux le faire à la main pour comparer des dizaines de milliers de nombres à 13 chiffres (les EAN).

    Merci d'avoir la gentillesse de me donner la solution, car je ne sais si cela fait appel à une macro ou un module !

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Salut,

    Si je comprends la demande, c'est de savoir si un code EAN existe dans les deux fichiers ou pas. Si c'est le cas, il suffit d'utiliser la fonction nb.si sur le code EAN.

    Cdlt.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 20
    Points
    20
    Par défaut
    Merci du retour...mais non, c'est faire ce qu'on appelle je crois matcher et ensuite les faire correspondre sur la même ligne....Mise à jour du fichier, le premier été erroné : exemple_extrait2.ods

  4. #4
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 20
    Points
    20
    Par défaut
    voici un fichier avec l'exemple de départ et l'exemple d'arrivé ci-dessous... : http://www.cjoint.com/c/FLmruIA7Dw8

  5. #5
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 20
    Points
    20
    Par défaut
    Merci si quelqu'un a le temps de me répondre....

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Citation Envoyé par IED factory Voir le message
    Merci si quelqu'un a le temps de me répondre....
    On est sur un forum, il faut donc être patient.

    Voici un bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub zoom61() 
        Dim monDocument1 As Object, monDocument2 As Object
        Dim lesFeuilles1 as Object, lesFeuilles2 as Object
        Dim maFeuille1 As Object, maFeuille2 As Object
        Dim maCellule1 As Object, maCellule2 As Object, maCellule1A As Object, maCellule1B
        Dim maPosition1 As Object, maPosition2 As Object
        Dim nbLigne1 As Integer, nbLigne2 As Integer 
        Dim valCellule1 As String, valCellule2 As String, valCellule3 As String
        Dim Arg(1) As New com.sun.star.beans.PropertyValue
        Dim nomFichier1 As String, nomFichier2 As String 
     
        monDocument1 = ThisComponent
        lesFeuilles1 = monDocument1.Sheets
        maFeuille1 = lesFeuilles1.getByName("Feuille1")
        maPosition1 = maFeuille1.createCursor
        maPosition1.gotoEndOfUsedArea(False)
        nbLigne1 = maPosition1.RangeAddress.EndRow + 1
     
        nomFichier2 =ConvertToURL( "/.../fichier2.ods")
        monDocument2 = StarDesktop.loadComponentFromURL(nomFichier2, "_blank", 0, Arg())
        lesFeuilles2 = monDocument2.Sheets
        maFeuille2 = lesFeuilles2.getByName("Feuille1")
        maPosition2 = maFeuille2.createCursor
        maPosition2.gotoEndOfUsedArea(False)
        nbLigne2 = maPosition2.RangeAddress.EndRow + 1
     
        For i = 2 To nbLigne1
            maCellule1 = maFeuille1.getCellByPosition(6,i)
            valCellule1 = maCellule1.String
            For j = 2 To nbLigne2
                maCellule2 = maFeuille2.getCellByPosition(6,j)
                valCellule2 = maCellule2.String
                If valCellule1 = valCellule2 Then 
                    For k = 0 To 11
                        maCellule1A = maFeuille2.getCellByPosition(k,j)
                        valCellule3 = maCellule1A.String 
                        maCellule1B = maFeuille1.getCellByPosition(k+12,i)
                        maCellule1B.String = valCellule3                   
                    Next             
                End If
            Next 
        Next     
        MsgBox "Fin", 48
     
    End Sub

  7. #7
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 20
    Points
    20
    Par défaut
    Merci de ce retour et de ce code. Je suis désolé, mais je ne sais pas quoi faire de ce code. Pouvez-vous m'expliquer comment l'appliquer ? Je suis vraiment un novice en la matière !

  8. #8
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Ce code doit être insérer dans le fichier contenant le plus de ligne, et la ligne 19 doit être modifiée pour avoir le nom et le chemin du second fichier.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 20
    Points
    20
    Par défaut
    Merci, mais comment insère ton un code dans un fichier .ods ? (Je sais je suis nul !)

  10. #10
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Tu as les éléments ici ou ici.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 20
    Points
    20
    Par défaut
    Merci je vais essayer de comprendre cela....

  12. #12
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 20
    Points
    20
    Par défaut
    J'ai compris comment appliquer la macro, la sauvegarder, et l'appliquer. mais cela ne fonctionne pas.

    Je me pose une question simple. Comment votre code peut fonctionner alors que les deux fichiers n'ont pas de noms de colonnes identiques, ainsi que leur emplacement ?
    Encore merci de votre retour..

  13. #13
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Citation Envoyé par IED factory Voir le message
    Je me pose une question simple. Comment votre code peut fonctionner alors que les deux fichiers n'ont pas de noms de colonnes identiques, ainsi que leur emplacement ?
    N'ayant eu qu'un fichier, je suis parti du principe que les deux étaient identiques. Il faut l'adapter, les lignes qui sélectionnent le EAN sont les lignes 28 et 32.

  14. #14
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 20
    Points
    20
    Par défaut
    Merci beaucoup de ces précisions, je vais adapter mes fichiers de tests et revenir vers vous.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 20
    Points
    20
    Par défaut
    Je vous joins les deux fichiers de tests formatés de la même façon, car je suis incapable d'adapter ce code ! Merci encore pour votre gentillesse, compétence et disponibilité !fichier2015.ods fichier2016.ods

  16. #16
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Donc le code à mettre dans le fichier de 2015 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub zoom61() 
        Dim monDocument1 As Object, monDocument2 As Object
        Dim lesFeuilles1 as Object, lesFeuilles2 as Object
        Dim maFeuille1 As Object, maFeuille2 As Object
        Dim maCellule1 As Object, maCellule2 As Object, maCellule1A As Object, maCellule1B
        Dim maPosition1 As Object, maPosition2 As Object
        Dim nbLigne1 As Integer, nbLigne2 As Integer 
        Dim valCellule1 As String, valCellule2 As String, valCellule3 As String
        Dim Arg(1) As New com.sun.star.beans.PropertyValue
        Dim nomFichier1 As String, nomFichier2 As String 
     
        monDocument1 = ThisComponent
        lesFeuilles1 = monDocument1.Sheets
        maFeuille1 = lesFeuilles1.getByName("Feuille1")
        maPosition1 = maFeuille1.createCursor
        maPosition1.gotoEndOfUsedArea(False)
        nbLigne1 = maPosition1.RangeAddress.EndRow + 1
     
        nomFichier2 =ConvertToURL("/home/vincent/Téléchargements/fichier2016.ods")
        monDocument2 = StarDesktop.loadComponentFromURL(nomFichier2, "_blank", 0, Arg())
        lesFeuilles2 = monDocument2.Sheets
        maFeuille2 = lesFeuilles2.getByName("Feuille1")
        maPosition2 = maFeuille2.createCursor
        maPosition2.gotoEndOfUsedArea(False)
        nbLigne2 = maPosition2.RangeAddress.EndRow + 1
     
        For i = 1 To nbLigne1
            maCellule1 = maFeuille1.getCellByPosition(0,i)
            valCellule1 = maCellule1.String
            For j = 1 To nbLigne2
                maCellule2 = maFeuille2.getCellByPosition(0,j)
                valCellule2 = maCellule2.String
                If valCellule1 = valCellule2 Then 
                    For k = 0 To 8
                        maCellule1A = maFeuille2.getCellByPosition(k,j)
                        valCellule3 = maCellule1A.String 
                        maCellule1B = maFeuille1.getCellByPosition(k+9,i)
                        maCellule1B.String = valCellule3                   
                    Next             
                End If
            Next 
        Next     
        MsgBox "Fin", 48
     
    End Sub

  17. #17
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 20
    Points
    20
    Par défaut
    Alors super ! Avec LO dernière version sur PC Windows 10, cela fonctionne ! Un grand merci !
    Trois questions encore :
    Y-a-t-il une limitation de donnée, car dans mes deux fichiers il va y avoir d'un coté plus de 41 000 et de l'autre plus de 29 000 ?
    Lors de votre premier test, vous avez mis la macro dans le fichier le plus fourni et donc 2016. Dans la dernière, vous me dite de partir de 2015, alors qu'il était volontairement égale en terme de ligne. Que dois-je faire ?
    Pouvez-vous m'expliquer comment adapter le code au nombre de lignes, si besoin ?
    Merci encore !

  18. #18
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Citation Envoyé par IED factory Voir le message
    Y-a-t-il une limitation de donnée, car dans mes deux fichiers il va y avoir d'un coté plus de 41 000 et de l'autre plus de 29 000 ?
    Il y a une limitation du nombre de lignes qui de 1 048 576, donc cela devrait aller, ensuite plus il y aura de lignes et plus la macro sera longue, mais vu les quantités de deux fichiers cela devrait être rapide.

    Citation Envoyé par IED factory Voir le message
    Lors de votre premier test, vous avez mis la macro dans le fichier le plus fourni et donc 2016. Dans la dernière, vous me dite de partir de 2015, alors qu'il était volontairement égale en terme de ligne. Que dois-je faire ?
    Il suffit de mettre la requête dans le fichier où l'on veut récupérer les données et modifier la ligne 19 pour y mettre le chemin et le nom du fichier où l'on va chercher les données.

    Citation Envoyé par IED factory Voir le message
    Pouvez-vous m'expliquer comment adapter le code au nombre de lignes, si besoin ?
    La macro va elle même chercher la dernière ligne du fichier.

  19. #19
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 20
    Points
    20
    Par défaut
    Comment vous remercier ?!!!! Je ne sais que vous dire ! Merci de donner un peu de votre savoir à des gens ignorant ! Amateur de jazz, il y a un titre d'Aderley qui s'appelle Mercy, Mercy, Mercy !

    Je vais de ce pas mettre mon fichier entier et tester tout cela ! je reviens vers vous pour conclure je l'espère...

  20. #20
    Membre à l'essai
    Homme Profil pro
    Webmaster
    Inscrit en
    Novembre 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Novembre 2007
    Messages : 76
    Points : 20
    Points
    20
    Par défaut
    On y est presque. J'ai ce message d'erreur à la fin du traitement : "Valeur ou type de données incorrect(e). Débordement" et l'éditeur de macro s'ouvre avec une flèche rouge montrant la ligne nbLigne1 = maPosition1.RangeAddress.EndRow + 1
    Voir capture : Nom : Capture d’écran 2016-12-14 à 16.26.15.jpg
Affichages : 766
Taille : 267,3 Ko

Discussions similaires

  1. [XL-2010] Suppression d'une ligne dont les cellules sont vides à partir d'une certaine colonne
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/04/2015, 13h54
  2. [MySQL] Sélection des lignes dont les associations sont dans une certaines liste
    Par collect dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 15/01/2015, 22h09
  3. modifier des tables dont les noms sont dans une autre
    Par lapin_did dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/09/2010, 09h45
  4. Retourné des lignes dont certains champs sont vides
    Par griese dans le forum Langage SQL
    Réponses: 5
    Dernier message: 27/06/2006, 10h23
  5. fusionner 2 tables dont les champs sont identiques mais.....
    Par NoobX dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/10/2005, 16h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo