XL 2021 sélection de colonne et ordonnancement des colonnes en déclarant en variable les entêtes

  • Initiateur de la discussion Initiateur de la discussion ftpo69
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ftpo69

XLDnaute Nouveau
Bonjour à toutes et tous.
Je souhaite travailler en VBA sur des données que je reçois quotidiennement en tableau excel.
Malheureusement, les colonnes ne sont pas toujours au même endroit selon les jours.
Je souhaite donc sélectionner certaines colonnes et les ordonnancer selon un ordre bien précis.
Pour cela, je cherche à déclarer en variable les intitulés des colonnes, qui eux ne changent pas, afin d'en sélectionner certaines et de les ranger dans l'ordre que je souhaite.
J'ai illustré mon propos dans l'exemple joint, avec dans l'onglet "data" le tableau source et "résultat" le résultat souhaité.
Merci de votre aide, car les dim et integer sont pour moi du chinois☺
 

Pièces jointes

Bonsoir @ftpo69 🙂,

Une petite macro évènementielle à placer dans le module de code de la feuille "résultat".
Le tableau de la feuille "résultat" est automatiquement mis à jour quand on active la feuille "résultat".
Les colonnes sur la feuille résultat sont repérées par leur en-tête sur la ligne 1de la cette feuille résultat.

Le code :
VB:
Private Sub Worksheet_Activate()
Dim j&, entete$, n&
   Application.ScreenUpdating = False
   With Sheets("résultat")
      For j = 1 To Columns.Count
         entete = .Cells(1, j)
         If Trim(entete) = "" Then Exit For
         .Cells(2, j).Resize(Rows.Count - 1).Clear
         n = Application.IfError(Application.Match(entete, Sheets("data").Rows(1), 0), 0)
         If n Then Sheets("data").Columns(n).Copy .Columns(j)
      Next j
   End With
End Sub
 

Pièces jointes

Bonjour mapomme.
Merci pour ce code. Il fonctionne très bien dans le cas où la feuille "Resultat" existe à l'avance.
Si je pars d'un classeur avec uniquement la feuille data et que je crai la feuille Résultat en mettant en A1 Colonne1, en B1 Colonne2, en C1 Colonne3, comment puis-je intégrer ton code évènementielle?

Sheets.Add After:=ActiveSheet
Sheets("Feuil2").Select
Sheets("Feuil2").Name = "Resultat"
Sheets("Resultat").Select
ActiveCell.FormulaR1C1 = "Colonne1"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Colonne2"
Range("C1").Select
ActiveCell.FormulaR1C1 = "Colonne3"
Sheets("data").Select
Range("A1").Select
ActiveWorkbook.Save
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour