Un petit coup de main

Bonjour,

J'ai besoin de votre aide une fois de plus. Après de multiple recherche et d'essai je n'ai toujours pas la solution !

Je souhaite rechercher la colonne qui contient la date du jour en entête et copier la liste des noms de gauche ainsi que toutes la colonne concerné sur la feuille "copie".

Option Explicit

Sub Bouton1_Cliquer()

Dim Fichier, WbkCopy As Workbook
Dim Colonnes(), Col As Integer, Resultat As Variant

  'On attribue à la variable WbkColle le fichier actuel (celui qui contient la macro)
  'Set WbkColle = ThisWorkbook
  'A adapter : Nom des entêtes de colonnes à importer
  Colonnes = Array(Date)

      'Boucle sur toutes les entêtes des colonnes
      For Col = 1 To Cells(1, Cells.Columns.Count).End(xlToLeft).Column
        'teste si l'entête correspond à un des noms des colonnes à copier
        Resultat = Application.Match(Cells(1, Col), Colonnes, 0)
        'Si l'entête est trouvée (colonne à copier)

        If Not IsError(Resultat) Then

          Columns(Col).Copy ThisWorkbook.Sheets("Copie").Cells(1, Cells.Columns.Count).End(xlToLeft).Offset(0, 1)

        End If
      Next Col

End Sub

Voici le code et le fichier test.

Bonne soirée a tous

16testvba.xlsm (20.60 Ko)

Bonsoir Steph, bonsoir le forum,

Visiblement pas le bon fichier...

Autant pour moi !!

13testvba.xlsm (25.97 Ko)

bonsoir,

une proposition de correction (ta date se trouve en ligne 2 et non en ligne 1)

ption Explicit

Sub Bouton1_Cliquer()

Dim Fichier, WbkCopy As Workbook
Dim Colonnes(), derCol As Integer, Resultat As Variant

  'On attribue à la variable WbkColle le fichier actuel (celui qui contient la macro)
  'Set WbkColle = ThisWorkbook
  'A adapter : Nom des entêtes de colonnes à importer

      'Boucle sur toutes les entêtes des colonnes
     derCol = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
        'teste si l'entête correspond à un des noms des colonnes à copier
        Set Resultat = Range(Cells(2, 1), Cells(2, derCol)).Find(Date)
        'Si l'entête est trouvée (colonne à copier)

        If Not Resultat is nothing Then

          Columns(Resultat.Column).Copy ThisWorkbook.Sheets("Copie").Cells(1, Cells.Columns.Count).End(xlToLeft).Offset(0, 1)

        End If

End Sub

edit : correction du code

Ça fonctionne très bien. Merci beaucoup.

Il y a juste une partie que je ne comprend pas :

If Not IsError(Resultat) Then

Qu'est ce que cela veut dire ?

stephb084 a écrit :

Ça fonctionne très bien. Merci beaucoup.

Il y a juste une partie que je ne comprend pas :

If Not IsError(Resultat) Then

Qu'est ce que cela veut dire ?

c'est une erreur de ma part, j'ai modifié le code (voir message précédent) pour avoir le traitement correct en cas de date non trouvée.

Bonsoir,

Je cherche a comprendre dans le détail le codage vba. Et la je ne sais pas comment on pourrais traduire cette partie de code :

    If Not Resultat nothing Then

"Si ce n'est pas Resultat rien a faire alors ..."

Merci encore pour votre aide.

bonjour,

tu as oublié le "is"

If Not Resultat is nothing Then

si le résultat est différent de rien .... ou encore "si on as trouvé quelque-chose"

Merci pour cet éclaircissement pierre.

Bonne soirée

Rechercher des sujets similaires à "petit coup main"