Microsoft 365 récupérer des colonnes d'une table Excel extraite d'une BDD

jeromegagne

XLDnaute Nouveau
Bonjour,
je souhaiterais connaitre une astuce afin de récupérer des colonnes issue d'une extraction de table d'une base de données.
Les colonnes à récupérer ont toujours le même nom. je les ai surligné en jaune
Auriez vous une idée de comment procéder ?

Cordialement;
Jérôme
 

Pièces jointes

  • EXPORT_tbl_workorder3430188795155606273.xlsx
    11 KB · Affichages: 9
Solution
Bonsoir @jeromegagne :), @Danixdb ;),
Bienvenue sur XLD :),

Une version VBA :
  • cliquer sur le bouton Hop! de la feuille "Result"
  • le code est dans module1
  • la constante cols contient les en-têtes des colonnes à extraire séparés par un point-virgule (à vous d'adapter à votre cas)
  • pour le test TOTO est une colonne à extraire qui n'existe pas

Le code :
VB:
Sub test()
Const cols = "CODE_WORKORDER;DESCRIPTION;REALENDDATE;TOTO;PRIORITY;STATUS;FK_CODE_SITE;TARGENDDATE"
Dim s, entete, col&, n&, derlig&

   Application.ScreenUpdating = False
   s = Split(cols, ";")
   With Sheets("TBL_WORKORDER")
      derlig = .UsedRange.Row + .UsedRange.Rows.Count - 1...

Danixdb

XLDnaute Nouveau
Bonjour jeromegagne, Le Forum,

Avec Office 365, l'utilisation de Power query répondrait à votre demande, cet outil permet de se connecter à des sources diverses et variées (SQL Server, Access, fichier excel, fichiers CSV et TXT,.......)
Choisir dans le menu Données d'Excel, la source de données, ce qui générera une requête sur la table sélectionnée avec une vision de tous les champs de celle-ci, vous n'aurez plus qu'à supprimer tous les champs que vous ne souhaitez pas récupérer, changer le type de ceux restants (type des données texte, date, nombre, nombre décimal,.....).
Cet outil encore peu utiliser en France, est pourtant très performant, évite parfois l'écriture de macros complexes, nos confrères outre atlantique l'utilise beaucoup et on trouve sur le Net des vidéos expliquant comment l'utiliser.
Cordialement
DanixDB
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @jeromegagne :), @Danixdb ;),
Bienvenue sur XLD :),

Une version VBA :
  • cliquer sur le bouton Hop! de la feuille "Result"
  • le code est dans module1
  • la constante cols contient les en-têtes des colonnes à extraire séparés par un point-virgule (à vous d'adapter à votre cas)
  • pour le test TOTO est une colonne à extraire qui n'existe pas

Le code :
VB:
Sub test()
Const cols = "CODE_WORKORDER;DESCRIPTION;REALENDDATE;TOTO;PRIORITY;STATUS;FK_CODE_SITE;TARGENDDATE"
Dim s, entete, col&, n&, derlig&

   Application.ScreenUpdating = False
   s = Split(cols, ";")
   With Sheets("TBL_WORKORDER")
      derlig = .UsedRange.Row + .UsedRange.Rows.Count - 1
      Sheets("Result").Columns.Clear
      Sheets("Result").Rows(1).Font.ColorIndex = xlColorIndexAutomatic
      On Error Resume Next
      For Each entete In s
         col = 0
         col = Application.Match(entete, Sheets("TBL_WORKORDER").Rows(1), 0)
         If col = 0 Then
            n = n + 1
            Sheets("Result").Cells(1, n) = entete & " ?"
            Sheets("Result").Cells(1, n).Font.Color = RGB(255, 0, 0)
         Else
            n = n + 1
            .Columns(col).Resize(derlig).Copy Sheets("Result").Cells(1, n)
         End If
      Next entete
      On Error GoTo 0
      Application.Goto Sheets("Result").Cells(1, 1), True
   End With
End Sub
 

Pièces jointes

  • jeromegagne- EXPORT- v1.xlsm
    63.1 KB · Affichages: 14
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 097
Messages
2 085 256
Membres
102 839
dernier inscrit
Tougtoug