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

Macros et VBA Excel Discussion :

Conversion d'un tableau excel vba [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Macao

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 15
    Par défaut Conversion d'un tableau excel vba
    Bonjour
    j'ai besoin d'un programme qui permet de faire la conversion d'un tableau 1, qui contient des cellules fusionnées en un autre tableau 2 qui va contenir des cellules non fusionnées .je veux aussi que les lignes du tableau 2 contient toutes les combinaisons possibles entre les colonnes du tableau 1.
    voici un exemple qui va bien vous décrire la situation:
    tableau 1:
    A B C D
    0 T
    1 Z V O
    2 P

    tel que: A, B, C, D représentent les numéros des colonnes dans excel, j'ai considéré que les cellules de la colonne C sont fusionnées, de même pour la colonne D.

    Voici le Tableau 2 que je souhaite obtenir est le suivant:
    tableau 2:
    A B C D
    0 T V O
    1 T V O
    2 T V O
    0 Z V O
    1 Z V O
    2 Z V O
    0 P V O
    1 P V O
    2 P V O
    J'aimerai bien que le programme traite tous les cas, parce que la taille du tableau 1 est variable.

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,
    ceci , si j'ai bien compris
    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
    Sub Tableau()
        Dim DerLig As Long, NbVal_Col_B As Long, Val1_Fus As String, Val2_Fus As String
        Application.ScreenUpdating = False
        DerLig = [A100000].End(xlUp).Row
        NbVal_Col_B = DerLig
        Val1_Fus = Cells(2, "C")
        Val2_Fus = Cells(2, "D")
     
        'Recopie des valeurs traitées en colonnes F à I
        L = 2
        For i = 2 To NbVal_Col_B
            For J = 2 To DerLig
                If Cells(J, "C") <> "" Then Val1_Fus = Cells(J, "C")
                If Cells(J, "D") <> "" Then Val2_Fus = Cells(J, "D")
                Cells(L, "F") = Cells(i, "A")
                Cells(L, "G") = Cells(J, "B")
                Cells(L, "H") = Val1_Fus
                Cells(L, "I") = Val2_Fus
                L = L + 1
            Next J
        Next i
    End Sub
    avec un fichier test:
    Pièce jointe 381403
    Cdlt

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : Macao

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2018
    Messages : 15
    Par défaut conversion d'un tableau excel vba
    Bonjour;
    Je vous remercie pour votre retour
    moi je veux que le programme soit vraiment général pour qu'il englobe tous les cas possible.
    car les cellule fusionnées peuvent être à n'importe quelle colonne

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Ce serait intéressant d'avoir l'énoncé complet de l'exercice donné par le "prof" (en plus d'une explication sur l'utilité de ce genre d'âneries)
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    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
    Sub Tableau()
        Dim DerLig As Long, NbVal As Long
        Application.ScreenUpdating = False
        Application.DisplayAlerts = False
        DerLig = Columns("A:D").Find(what:="*", searchdirection:=xlPrevious).Row
        NbVal = DerLig
     
        'Defusionnage
        Range("A2:D" & DerLig).MergeCells = False
        For i = 2 To DerLig
            If Cells(i, "A") <> "" Or Cells(i, "B") <> "" Or Cells(i, "C") <> "" Or Cells(i, "D") <> "" Then
                If Cells(i, "A") = "" Then Cells(i, "A") = Cells(i - 1, "A")
                If Cells(i, "B") = "" Then Cells(i, "B") = Cells(i - 1, "B")
                If Cells(i, "C") = "" Then Cells(i, "C") = Cells(i - 1, "C")
                If Cells(i, "D") = "" Then Cells(i, "D") = Cells(i - 1, "D")
            End If
        Next i
     
        'Recopie des valeurs traitées en colonnes F à I
        L = 2
        For A = 2 To NbVal
            For B = 2 To DerLig
                For C = 2 To DerLig
                    For D = 2 To DerLig
                        Cells(L, "F") = Cells(A, "A")
                        Cells(L, "G") = Cells(B, "B")
                        Cells(L, "H") = Cells(C, "C")
                        Cells(L, "I") = Cells(D, "D")
                        L = L + 1
                    Next D
                Next C
            Next B
        Next A
     
        'Tri
        DerLig = Columns("F").Find(what:="*", searchdirection:=xlPrevious).Row
        Range("F2:I" & DerLig).Select
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("F2:F" & DerLig), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("G2:G" & DerLig), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("H2:H" & DerLig), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("I2:I" & DerLig), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("Feuil1").Sort
            .SetRange Range("F1:I" & DerLig)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
     
        'Suppression des doublons
        For i = DerLig To 2 Step -1
            If Cells(i, "F") = Cells(i - 1, "F") And Cells(i, "G") = Cells(i - 1, "G") And Cells(i, "H") = Cells(i - 1, "H") And Cells(i, "G") = Cells(i - 1, "G") Then Range(Cells(i, "F"), Cells(i, "I")).Delete
       Next i
    End Sub

    Avec le fichier
    Pièce jointe 381572

    Cdlt

  6. #6
    Membre du Club
    Femme Profil pro
    industriel
    Inscrit en
    Mai 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : industriel
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2018
    Messages : 7
    Par défaut conversion tableau excel vba
    Sara veut dire que les cellule fusionnées peuvent etre dans n'importe quelle colonne et pas forcément dans les colonnes D et C

  7. #7
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour wafa-wafa,
    Si vous aviez pris la peine d'ouvrir le fichier joint juste avant votre intervention , vous auriez vu que j'avais glissé des cellules fusionnées dans les 4 colonnes pour répondre à la question posée qui soit dit en passant ne faisait état que des colonnes C et D à l'origine.
    De plus, comme sara-dahour ne s'est pas manifesté, c'est que cela devait lui convenir.
    Cdlt

  8. #8
    Membre du Club
    Femme Profil pro
    industriel
    Inscrit en
    Mai 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activité : industriel
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2018
    Messages : 7
    Par défaut
    Bonjour ARTURO83
    On vous remercie infiniment pour votre intervention je travaille avec Sara Dahour sur le même projet dans le cadre de notre stage .
    J'ai essayé d'illustrer notre vrai besoin dans le fichier joint ,je vous remercie encore une autre fois .
    a titre d'information les combinaison possible entre les colonnes c'est juste pour le regroupement entre les cellules fusionnées , je vous invite a voir la pièce jointe, et j'espère bien que ça sera compréhensible .
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Ventiler les données d'un tableau excel VBA
    Par mar21-2016 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/01/2016, 07h01
  2. [XL-2013] Automatisation VBA de la conversion tableau internet en tableau excel exploitable
    Par baryum dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 29/11/2015, 20h29
  3. [Toutes versions] Extraire du texte d'un pdf et l'importer dans un tableau Excel (VBA)
    Par speedfree dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/12/2010, 09h03
  4. Comportement dynamique de boutons dans un tableau excel vba
    Par Ok371 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/11/2010, 20h06

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