COMMENT FAIRE : Transposer des données dans une table ou une requête dans Microsoft Access 2000

Niveau débutant : les explications ci-dessous requièrent une bonne connaissance de l’interface utilisateur des ordinateurs personnels.




Pour obtenir une version Microsoft Access 97 de cet article, consultez le document 182822 .

Pour obtenir une version Microsoft Access 2002 de cet article, consultez le document 283875 .

DANS CETTE TÂCHE

Résumé

De temps à autre, vous pouvez avoir besoin de transposer des données dans une table ou dans une requête afin que les noms de champs s'affichent à la verticale sur la colonne de gauche et que les données s'étendent à l'horizontale sur la page. À titre d'exemple, il se peut que vous deviez transposer les données destinées à un état ou que vous deviez effectuer cette opération avant d'exporter ces données vers un fichier texte. Cet article présente deux méthodes vous permettant d'exécuter cette tâche. La méthode 1 explique comment vous pouvez exporter des données vers Microsoft Excel, transposer ces dernières, puis réimporter le résultat dans Microsoft Access. La méthode 2 décrit, quant à elle, la procédure à suivre pour utiliser une procédure Visual Basic pour Applications afin d'effectuer cette tâche.

REMARQUE : Aucune des deux méthodes proposées ne fonctionnera si vous disposez de plus de 255 enregistrements dans la mesure où le nombre maximal de champs autorisés dans une table Microsoft Access est fixé à 255.

Méthode 1 - Transposition de données dans Microsoft Excel

Exportation de données vers Microsoft Excel

  1. Démarrez Microsoft Access et ouvrez votre base de données. Dans la fenêtre Base de données, cliquez sur la table ou sur la requête que vous voulez exporter.
  2. Dans le menu Fichier, cliquez sur Exporter.
  3. Dans la boîte de dialogue Type de fichier, sélectionnez dans la zone Type la version d'Excel vers laquelle vous effectuez l'exportation.
  4. Spécifiez le nom et l'emplacement du fichier, puis cliquez sur Enregistrer.

Transposition de données dans Microsoft Excel

  1. Démarrez Microsoft Excel et ouvrez la feuille de calcul que vous avez créée à l'étape 5 de la section « Exportation de données vers Microsoft Excel ».
  2. Appuyez sur CTRL+ORIGINE pour atteindre la cellule A1. Appuyez sur CTRL+MAJ+FIN pour sélectionner toutes les données.
  3. Dans le menu Edition, cliquez sur Copier.
  4. Dans le menu Insertion, cliquez sur Feuille de calcul.
  5. Dans le menu Edition, cliquez sur Collage spécial.
  6. Dans la boîte de dialogue Collage spécial, activez la case à cocher Transposé, puis cliquez sur OK.
  7. Dans le menu Format, pointez sur Feuille, puis cliquez sur Renommer. Attribuez un nom à la feuille qui contient les données transposées. Si vous le souhaitez, cliquez sur Enregistrer sous dans le menu Fichier pour exporter directement les données en texte à partir de Microsoft Excel.
  8. Enregistrez et fermez le classeur, puis quittez Microsoft Excel.

Importation de données dans Microsoft Access

REMARQUE : Vous pouvez éviter tout risque d'erreur de conversion de type si vous créez une table vierge exclusivement constituée de champs de texte et si vous ajoutez les données à cette table plutôt que de procéder à l'importation des données dans une nouvelle table. Toutefois, il est impossible d'ajouter des données de feuille de calcul à une table existante dans Microsoft Access.

  1. Dans le menuFichier, pointez sur Données externes, puis cliquez sur Importer.
  2. Dans la boîte de dialogue Importer, cliquez sur Microsoft Excel (*.xls) dans la liste Type de fichiers.
  3. Recherchez et sélectionnez le fichier que vous avez enregistré après la transposition des données dans Microsoft Excel. Cliquez ensuite sur Importer.
  4. Dans le premier écran de l'Assistant Importation de feuille de calcul, cliquez sur Afficher les feuilles de calcul, puis sélectionnez la feuille contenant les données transposées. Cliquez ensuite sur Suivant.
  5. N'activez pas la case à cocher Première ligne contient les en-têtes de colonnes sur la deuxième page de l'Assistant Importation de feuille de calcul. Cliquez sur Suivant.
  6. Cliquez sur Dans une nouvelle table, puis cliquez deux fois sur Suivant.
  7. Cliquez sur Pas de clé primaire, puis sur Suivant.
  8. Cliquez sur Terminer. La table résultante contient les données transposées.

Méthode 2 - Utilisation d'une fonction personnalisée pour transposer la table

Microsoft fournit des exemples de programmation à titre indicatif uniquement, et ce sans garantie expresse ou implicite, notamment, mais de manière non limitative, toute garantie implicite de qualité marchande et/ou d'adéquation à un usage particulier. Pour bien comprendre cet article, vous devez connaître le langage de programmation mentionné ainsi que les outils utilisés dans la création et le débogage des procédures. Les techniciens du support technique de Microsoft peuvent vous aider à comprendre la fonctionnalité d'une procédure particulière, mais ils ne modifieront pas ces exemples afin de fournir des fonctionnalités supplémentaires ou des procédures de construction adaptées à vos besoins spécifiques. Si votre expérience en matière de programmation est limitée, vous pouvez contacter un Partenaire certifié Microsoft (MCP) ou bien appeler la ligne de consultation payante de Microsoft au 09 70 01 90 90. Pour plus d'informations sur les Partenaires certifiés Microsoft, veuillez consulter le site Web suivant :

Pour plus d'informations sur les options de support disponibles et sur la façon de contacter Microsoft, visitez le site Web Microsoft suivant :

  1. Créez un nouveau module dans votre base de données et entrez la procédure suivante :
    Function Transposer(strSource As String, strTarget As String)

    Dim db As DAO.Database
    Dim tdfNewDef As DAO.TableDef
    Dim fldNewField As DAO.Field
    Dim rstSource As DAO.Recordset, rstTarget As DAO.Recordset
    Dim i As Integer, j As Integer

    On Error GoTo Transposer_Err

    Set db = CurrentDb()
    Set rstSource = db.OpenRecordset(strSource)
    rstSource.MoveLast

    ' Crée une nouvelle table pour contenir les données transposées.
    ' Crée un champ pour chaque enregistrement de la table d'origine.
    Set tdfNewDef = db.CreateTableDef(strTarget)
    For i = 0 To rstSource.RecordCount
    Set fldNewField = tdfNewDef.CreateField(CStr(i + 1), dbText)
    tdfNewDef.Fields.Append fldNewField
    Next i
    db.TableDefs.Append tdfNewDef

    ' Ouvre la nouvelle table et complète le premier champ avec
    ' les noms des champs de la table d'origine.
    Set rstTarget = db.OpenRecordset(strTarget)
    For i = 0 To rstSource.Fields.Count - 1
    With rstTarget
    .AddNew
    .Fields(0) = rstSource.Fields(i).Name
    .Update
    End With
    Next i

    rstSource.MoveFirst
    rstTarget.MoveFirst
    ' Complète chaque colonne de la nouvelle table
    ' avec un enregistrement de la table d'origine.
    For j = 0 To rstSource.Fields.Count - 1
    ' Commence par le second champ, car le premier
    ' contient déjà les noms des champs.
    For i = 1 To rstTarget.Fields.Count - 1
    With rstTarget
    .Edit
    .Fields(i) = rstSource.Fields(j)
    rstSource.MoveNext
    .Update
    End With

    Next i
    rstSource.MoveFirst
    rstTarget.MoveNext
    Next j

    db.Close

    Exit Function

    Transposer_Err:

    Select Case Err
    Case 3010
    MsgBox "La table " & strTarget & " existe déjà."
    Case 3078
    MsgBox "La table " & strSource & " n'existe pas."
    Case Else
    MsgBox CStr(Err) & " " & Err.Description
    End Select

    Exit Function

    End Function
  2. Pour tester cette fonction, appuyez sur CTRL+G. Dans la fenêtre Exécution, tapez la ligne suivante, puis appuyez sur ENTRÉE :
    ?Transposer("Suppliers","SuppliersTrans")
Propriétés

ID d'article : 202176 - Dernière mise à jour : 26 janv. 2012 - Révision : 1

Commentaires