Microsoft 365 Convertir en -tete tableau en date

eric72

XLDnaute Accro
Bonjour à tous,
je bloque pour convertir les en-têtes d'un tableau (issu d'une requête) en date.
J'ai essayé avec ce code :

Sheets("Archives").Range("d2:ue2").Select
Selection.TextToColumns Destination:=Range("d2"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 4), TrailingMinusNumbers:=True

mais il refuse de convertir plusieurs colonnes à la fois et comme le nombre de colonnes est important je n'ai pas trop envie de répéter la manoeuvre autant de fois qu'il y a de colonnes.
Si l'un d'entre vous a une idée!!!
Merci beaucoup pour votre dévouement.
Eric
 
Solution
Bonjour.
VB:
Sub Test()
   Dim Rng As Range, T(), C&, V
   Set Rng = Feuil1.[D2:N2]
   T = Rng.Value
   For C = 1 To UBound(T, 2): V = T(1, C)
      If VarType(V) = vbString And IsDate(V) Then T(1, C) = CDate(V)
      Next C
   Rng.Value = T
   End Sub
Remarque: si ça devait redevenir un tableau vous ne pourriez pas garder les Date dans l'entête, ce seront obligatoirement des String. Dans ce cas c'est la date à chercher qu'il faudrait convertir en String pour pouvoir l'y trouver.

eric72

XLDnaute Accro
Bonjour vgendron,

Merci pour votre réponse mais malheureusement ils restent au format texte, pour preuve quand je clique sur une en-tete et que je fais Données/convertir en date la date passe de gauche à droite dans la cellule et elle devient bien une date.
 

eric72

XLDnaute Accro
Voilà tout ce que j'ai trouvée pour l'instant , à faire jusqu'à la colonne "UE", quelle galère

Range("d2").Select: Selection.TextToColumns Destination:=Range("D2"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 4), TrailingMinusNumbers:=True
Range("e2").Select: Selection.TextToColumns Destination:=Range("e2"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 4), TrailingMinusNumbers:=True
Range("f2").Select: Selection.TextToColumns Destination:=Range("f2"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 4), TrailingMinusNumbers:=True
Range("g2").Select: Selection.TextToColumns Destination:=Range("g2"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 4), TrailingMinusNumbers:=True
Range("h2").Select: Selection.TextToColumns Destination:=Range("h2"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 4), TrailingMinusNumbers:=True
Range("i2").Select: Selection.TextToColumns Destination:=Range("i2"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 4), TrailingMinusNumbers:=True
 

eric72

XLDnaute Accro
Dans ton fichier, les entetes sont déjà des dates....

pour t'en convaincre, il suffit de taper
=annee(C2)
ah alors je ne comprends pas, j'ai une macro qui fait référence à ces dates dans laquelle il y a :

Set c = Sheets("archives").Range("2:2").Find(what:=Sheets("Consultation Planning").Range("AA6").Value, lookat:=xlWhole)

en l'état elle ne fonctionne pas alors que, quand je fais données/convertir en date, elle fonctionne bien, comment expliquer cela?
Merci pour le temps consacré
Eric
 

eric72

XLDnaute Accro
Dans ton fichier, les entetes sont déjà des dates....

pour t'en convaincre, il suffit de taper
=annee(C2)


et les données ne sont pas sous forme de table structurée..
En effet les données ne sont plus en table structurée j'ai transformé en plage, de plus ma macro de conversion fonctionne bien, elle est juste trop lourde à écrire, j'aurais aimé avec une boucle sur toutes les cellules de la ligne 2 mais je n'y parviens pas.
Merci
 

Dranreb

XLDnaute Barbatruc
Bonjour.
VB:
Sub Test()
   Dim Rng As Range, T(), C&, V
   Set Rng = Feuil1.[D2:N2]
   T = Rng.Value
   For C = 1 To UBound(T, 2): V = T(1, C)
      If VarType(V) = vbString And IsDate(V) Then T(1, C) = CDate(V)
      Next C
   Rng.Value = T
   End Sub
Remarque: si ça devait redevenir un tableau vous ne pourriez pas garder les Date dans l'entête, ce seront obligatoirement des String. Dans ce cas c'est la date à chercher qu'il faudrait convertir en String pour pouvoir l'y trouver.
 
Dernière édition:

eric72

XLDnaute Accro
Bonjour.
VB:
Sub Test()
   Dim Rng As Range, T(), C&, V
   Set Rng = Feuil1.[D2:N2]
   T = Rng.Value
   For C = 1 To UBound(T, 2): V = T(1, C)
      If VarType(V) = vbString And IsDate(V) Then T(1, C) = CDate(V)
      Next C
   Rng.Value = T
   End Sub
Remarque: si ça devait redevenir un tableau vous ne pourriez pas garder les Date dans l'entête, ce seront obligatoirement des String. Dans ce cas c'est la date à chercher qu'il faudrait convertir en String pour pouvoir l'y trouver.
Bonjour Dranreb,
C'est génial exactement ce que je voulais, simple, rapide et efficace
Un grand MERCI pour ce gros coup de main
Bonne soirée
Eric
 

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 183
dernier inscrit
karelhu35