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

Excel Discussion :

Lignes à concaténer avec ajout automatique de colonne


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Documentaliste
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Documentaliste

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Lignes à concaténer avec ajout automatique de colonne
    Bonjour et par avance, merci pour votre aide

    Je suis documentaliste et nous sommes en train de changer de logiciel.
    Je suis parvenu à sauver « tant bien que mal » les données de notre ancienne base, mais la présentation excel est problématique.
    A savoir qu’au lieu de se présenter sur une ligne unique, une référence apparait sur plusieurs lignes décalées.
    Est-il possible de concaténer ces lignes en une seule ? En sachant que le nombre de ligne est aléatoire, que le numéro de la colonne G est le numéro de référence qui permet de savoir que nous sommes dans une notice unique et que la colonne auteur doit être dupliqué autant de fois qu’il sera nécessaire.
    J’essaye d’être le plus clair possible, en espérant être compris
    Cette demande est-elle réalisable ?

    En vous souhaitant une excellente journée.

    Bien cordialement

    Quentin
    Fichiers attachés Fichiers attachés

  2. #2
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Bonjour

    à ta question
    Cette demande est-elle réalisable ?
    je répond oui

    mais j'ai des questions

    - A quoi sert la colonne H et la colonne L ?
    - Tes auteurs doivent ils être dans une même cellule ou pas ?

    tu dis
    a plus

  3. #3
    Candidat au Club
    Homme Profil pro
    Documentaliste
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Documentaliste

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut A rien
    Effectivement ces deux colonnes ne servent à rien.
    Elles sont à supprimer (sorry, je n'arrive pas à insérer le document sans les deux colonnes)
    Les auteurs doivent effectivement apparaître dans des colonnes séparées.

    Je rajoute également un document montrant le résultat souhaité.

    Bien cordialement

    Quentin
    Fichiers attachés Fichiers attachés

  4. #4
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Effectivement ces deux colonnes ne servent à rien.
    Elles sont à supprimer (sorry, je n'arrive pas à insérer le document sans les deux colonnes)
    c'est pas grave rien n'empèche de les supprimer après coup

    par contre ta proposition de résultat me gène si tu as un livre qui a plus de 4 auteurs comment tu le gères ... tu décales tout ???
    dans ce cas tes colonnes ne seront plus en face les unes des autres.

    Je te propose dans un premier temps de mettre tes auteurs à la fin (dernières colonnes)

    Peux-tu également me dire si il y a une raison pour ne pas mettre tous les auteurs dans une même cellule ?

    j'attend ton retour

    A+

  5. #5
    Candidat au Club
    Homme Profil pro
    Documentaliste
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Documentaliste

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Merci !
    Tout d'abord, un grand merci pour le temps passé me répondre !

    Les auteurs doivent effectivement apparaître dans des colonnes séparées. En effet, ils seront intégrés dans la nouvelle base dans des champs séparés.
    Par contre, bien évidemment aucun problème si les colonnes apparaissent à la fin.

    Bien cordialement

    Quentin

  6. #6
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Je ne sais pas comment sera conçu ta base de données mais en général tu as besoin de 3 tables (liste de données) pour gérer proprement ton affaire.

    Comme 1 livre est écris par n auteurs et un auteur peux avoir écris n livres

    Table 1 : Livres
    -N°livre; Titre; .....

    Table 2 : Auteurs
    -N°Auteur; Nom; Nationalité ....

    Table 3 : Ecris
    -N° Livre ; N°Auteur

    Tu comprends facilement l'interet de cette architecture :
    - Mise à jour d'un auteur une seule fois (pas de recherche sur x livres)
    - pas de case vide en fin de table Livre, du coup une Base de donnée plus compacte donc plus rapide
    - pas de limite d'auteur ayant participé a l'écriture d'un livre 10, 15 ... autant que l'on veut
    sans changer la structure de la base de donnés

    Ceci c'est juste pour que tu comprennes mieux comment sont gérées les bases de données
    ---------------------------------------------------------------------------------------
    donc voici une petite macro qui devrait faire ce dont tu as besoin

    1)tu copies tel quel dans un module de ton fichier
    2) tu lances la macro : Regroup_Livres
    3) tu laisse agir la macro fait le reste

    j'ai considéreé qu'il ne pouvait pas avoir plus de 4 auteurs pour un livre
    si c'est pas bon il faudra modifier la macro

    (j'ai fait cela rapidement c'est largement optimisable mais cela fonctionne)

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    Option Explicit
    '*****************************************************************************************
    ' Déclaration des variables
    '*****************************************************************************************
    Public Tablo(1 To 15) As String
    Public Lign_F1, Lign_RC, I As Long
     
    '*****************************************************************************************************
    ' Regroup_Livres    Macro de lancement principale
    '*****************************************************************************************************
    Sub Regroup_Livres()
        ' je crée une feuille résutat en espérant que le nom n'existe pas sinon il faudra penser à le gérer
        Sheets.Add After:=Sheets(Sheets.Count)
        Application.ActiveSheet.Name = "Resultat_Concat"
     
        Lign_F1 = 1         ' N°ligne de la feuille : Feuil1
        Lign_RC = 1         ' N°ligne de la feuille : Resultat_Concat
     
        ' saisie des entêtes
        Sheets("Feuil1").Select
        Call Init_tab           ' Appel de la procédure d'initialisation du tableau
        Call Charg_Tab          ' Appel de la procédure de chargement du tableau
        Call copi_tablo         ' Appel de la procédure de recopie des données
        Lign_F1 = Lign_F1 + 1
     
        ' traitement des données
        Call Init_tab
        Call Charg_Tab
        Lign_F1 = Lign_F1 + 1
        Do While Cells(Lign_F1, 1).Value <> ""
            Sheets("Feuil1").Select
            If Cells(Lign_F1, 1).Value = Tablo(1) Then
                If Tablo(7) = "" And Cells(Lign_F1, 9).Value <> "" Then
                    Tablo(7) = Cells(Lign_F1, 9).Value
                End If
                If Tablo(10) = "" And Cells(Lign_F1, 13).Value <> "" Then
                    Tablo(10) = Cells(Lign_F1, 13).Value
                End If
                If Cells(Lign_F1, 3).Value <> "" Then
     
                    If Tablo(12) = "" Then
                        Tablo(12) = Cells(Lign_F1, 3).Value
                    Else
                        If Tablo(13) = "" Then
                            Tablo(13) = Cells(Lign_F1, 3).Value
                        Else
                            If Tablo(14) = "" Then
                                Tablo(14) = Cells(Lign_F1, 3).Value
                            Else
                                If Tablo(15) = "" Then
                                    Tablo(15) = Cells(Lign_F1, 3).Value
                                Else
                                    MsgBox "Plus de 4 auteurs non géré"
                                End If
                            End If
                        End If
                    End If
                End If
            Else
                Call copi_tablo
                Call Init_tab
                Call Charg_Tab
            End If
            Lign_F1 = Lign_F1 + 1
        Loop
        Call copi_tablo
     
    End Sub
     
    '*****************************************************************************************************
    ' Init_tab      Macro de vidage du contenu du tableau en mémoire
    '*****************************************************************************************************
    Sub Init_tab()
    ' Procédure d'initialisation du tableau (à vide)
        For I = 1 To 15
            Tablo(I) = ""
        Next I
    End Sub
     
    '*****************************************************************************************************
    ' Charg_Tab     Macro de Chargement des données sur la feuille dans Tablo pour faire des regroupements
    '*****************************************************************************************************
    Sub Charg_Tab()
    ' Procédure de chargement du tableau
        Sheets("Feuil1").Select
        Tablo(1) = Cells(Lign_F1, 1).Value
        Tablo(2) = Cells(Lign_F1, 2).Value
        Tablo(3) = Cells(Lign_F1, 4).Value
        Tablo(4) = Cells(Lign_F1, 5).Value
        Tablo(5) = Cells(Lign_F1, 6).Value
        Tablo(6) = Cells(Lign_F1, 7).Value
        Tablo(7) = Cells(Lign_F1, 9).Value
        Tablo(8) = Cells(Lign_F1, 10).Value
        Tablo(9) = Cells(Lign_F1, 11).Value
        Tablo(10) = Cells(Lign_F1, 13).Value
        Tablo(11) = Cells(Lign_F1, 14).Value
        Tablo(12) = Cells(Lign_F1, 3).Value
     
    End Sub
     
    '*****************************************************************************************************
    ' copi_tablo    Macro de copie des données regroupées dans la nouvelle feuille
    '*****************************************************************************************************
    Sub copi_tablo()
    ' Procédure de copie du tableau en mémoire vers la feuille "Resultat_Concat"
        I = 1
        Sheets("Resultat_Concat").Select
        For I = 1 To 15
            Cells(Lign_RC, I) = Tablo(I)
        Next I
        Lign_RC = Lign_RC + 1
     
    End Sub
    bien evidemment si tu sauvegazrde ton classeur en xlsx tu perdra la marcro

    tu dis

    A+

  7. #7
    Candidat au Club
    Homme Profil pro
    Documentaliste
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Documentaliste

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Merci !
    Super, un tout grand merci !

    Je regarde cela avec mon stagiaire et vous tient au courant !

    Par contre, je crains qu'il n'y ait parfois plus de 4 auteurs...

  8. #8
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    N'hésites pas amettre des si tu es content et de mettre quand c'est résolu

    A+

  9. #9
    Candidat au Club
    Homme Profil pro
    Documentaliste
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Documentaliste

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Houston, nous avons un problème

    Le maximum d'auteur par notice s'élève à 22.... Et ils sont tous nécessaires...

    Le script est-il modifiable facilement ou .....

    En vous souhaitant une excellente journée, ici sous la pluie en Belgique..

    Quentin

  10. #10
    Membre expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 869
    Points : 3 442
    Points
    3 442
    Billets dans le blog
    1
    Par défaut
    Oh punaise 22 !

    donc 15-4+22 = 33

    le tableau doit faire 33 positions

    lignes à modifier à faire dans l'ordre c'est plus simple
    -ligne 5
    Public Tablo(1 To 33) As String

    -Ligne 53
    MsgBox "Plus de 22 auteurs non géré"

    -ligne 75 et 108
    For I = 1 To 33



    en fin le plus difficile

    après la ligne 52 il faut rajouter des blocs jusqu'à 33

    If Tablo(xx) = "" Then
    Tablo(xx) = Cells(Lign_F1, 3).Value
    Else

    ou xx prendra les valeurs 16, 17, 18 .... 33

    donc 33-15 = 18
    c'est a faire 18 fois !!!

    ne pas oublier d'indenter le code et ne pas oublier les End If

    Vous essayer de le faire et vous transmetez le code modifié


    a bientôt

  11. #11
    Candidat au Club
    Homme Profil pro
    Documentaliste
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Documentaliste

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Woaw !

    Je regarde cela à mon aise dans les prochains jours et clôture ce post dès que tout est ok !

    Un grand merci

    Quentin

  12. #12
    Candidat au Club
    Homme Profil pro
    Documentaliste
    Inscrit en
    Avril 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : Documentaliste

    Informations forums :
    Inscription : Avril 2015
    Messages : 7
    Points : 3
    Points
    3
    Par défaut résolu !
    Mon stagiaire a brillamment réussi les modifications grâce à votre aide !

    Encore un tout grand merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Formulaire avec ajout automatique de donnée
    Par CaiiLle dans le forum IHM
    Réponses: 4
    Dernier message: 06/03/2013, 18h10
  2. [AC-2007] Liste déroulante avec ajout automatique
    Par CrasherSEP dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 18/01/2012, 16h44
  3. Réponses: 2
    Dernier message: 28/08/2010, 04h20
  4. ajout automatique de colonne
    Par trago dans le forum Access
    Réponses: 1
    Dernier message: 17/06/2009, 16h11
  5. une ligne vide s'ajout automatiquement sur un datagrid
    Par tsdia2 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 27/06/2008, 19h54

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