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 :

Insertion automatique de colonnes dans un jeu de données


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Responsable des études
    Inscrit en
    Janvier 2022
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2022
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Insertion automatique de colonnes dans un jeu de données
    Bonsoir !

    Je suis très très rouillé en VBA et j'aurais besoin de votre aide pour faciliter l'exploitation de données. J'ai un fichier excel avec des réponses à un questionnaire qui demande 4 mots clefs parmi 45 thématiques choisies aléatoirement.

    J'ai donc un tableau avec comme en tête de colonnes. (exemple de la feuille "initiale" de mon xlsx d'exemple)
    1. ID du répondant
    2. Theme 1 - Mot clef 1
    3. Theme 1 - Mot clef 2
    4. Theme 1 - Mot clef 3
    5. Theme 1 - Mot clef 4
    6. Theme 2 - Mot clef 1
    7. Theme 2 - Mot clef 2
    8. Theme 2 - Mot clef 3
    9. Theme 2 - Mot clef 4
    10. ....
    11. Theme 45 - Mot clef 4


    J'aimerais pouvoir faire un tableau avec (exemple de la feuille "finale" de mon xlsx d'exemple)
    • Colonne 1 : ID du répondant
    • Colonne 2 : Thème du mot clef
    • Colonne 3 : numérotation de 1 à 4 selon la position dans le thème
    • Colonne 4 : mot clé


    Je me disais qu'une solution était de créer dans mon tableau initial 3 colonnes avant chaque colonne "Theme # - Mot clef #" (exemple de la feuille "intermédiaire" de mon xlsx d'exemple)
    • La première colonne contenant l'ID
    • La 2e contenant le nom du thème
    • La 3e colonne contenant le numéro de 1 à 4


    Et ensuite de faire "à la main" les 45 copiés collés un brin fastidieux mais faisables
    Auriez-vous une idée de quel code je peux utiliser pour faire ça ? (Si vous avez des idées plus pertinentes je suis preneur aussi)
    
    Merci d'avance pour votre aide.
    
    et bonne année au passage !
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 251
    Points : 5 626
    Points
    5 626
    Par défaut
    Bonjour,

    Une façon de faire utilisant des tableaux (array).
    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
    Option Explicit
    Option Base 1
     
    Sub ConversionTableau()
        Dim DataA() As Variant, DataB() As Variant, kR As Long, kC As Long, k As Long
        DataA = Worksheets("Initial").UsedRange.Value   '--- suppose qu'il n'y a pas de données en dehors du tableau
        kR = UBound(DataA, 1)           '--- nb de lignes
        kC = UBound(DataA, 2)           '--- nb de colonnes
        k = (kR - 1) * (kC - 1) + 1     '--- nb de données (mots)
        ReDim DataB(k, 4)
        DataB(1, 1) = "Id"
        DataB(1, 2) = "Thème"
        DataB(1, 3) = "Rang"
        DataB(1, 4) = "Mot"
        k = 1
        For kR = 2 To UBound(DataA, 1)                '--- les lignes
            For kC = 2 To UBound(DataA, 2)            '--- les colonnes
                k = k + 1
                DataB(k, 1) = DataA(kR, 1)
                DataB(k, 2) = Left(DataA(1, kC), Len(DataA(1, kC)) - 4)
                DataB(k, 3) = 1 + (kC + 2) Mod 4
                DataB(k, 4) = DataA(kR, kC)
            Next kC
        Next kR
        Worksheets("Final").Select
        Worksheets("Final").Cells.ClearContents
        Worksheets("Final").Range("A1:D" & k) = DataB
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [WD-2003] Insertion automatique de ligne dans tableau word après renvoi à la ligne
    Par melouille56 dans le forum VBA Word
    Réponses: 5
    Dernier message: 05/08/2009, 16h49
  2. PB insertion automatique Heure GMT dans Word
    Par tonykristof dans le forum VBA Word
    Réponses: 1
    Dernier message: 15/03/2009, 11h20
  3. insertion automatique d'image dans une frame
    Par romdev dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 17/01/2008, 14h20
  4. insertion d'une colonne dans un fichier
    Par yesil dans le forum Langage
    Réponses: 1
    Dernier message: 21/09/2007, 17h25
  5. insertion automatique de lignes dans la crontab
    Par Mr_Brown dans le forum Administration système
    Réponses: 2
    Dernier message: 27/03/2007, 15h03

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