Date en anglais après Transpose

  • Initiateur de la discussion Initiateur de la discussion Law
  • 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 !

L

Law

Guest
Bonjour le forum,

Dans le classeur ci-joint, je possède 4 feuilles.

Les 3 premières feuilles correspondent à des classes de comptes comptables et contiennent des tableaux qui représentent les différents comptes (205.000, 215.000 etc...)

J'aimerais construire une macro qui, en fonction du n° de mois que je saisi dans l'inputbox, me recense toutes les lignes dont la date est comprise dans ce mois.

Par exemple si je saisi 8 dans l'inputbox, la macro ne doit me recenser que les lignes dont la date est comprise entre le 01/08/2005 et le 31/08/2005.

M'étant inspiré de l'aide précieuse d'Hervé sur ce forum, j'ai commencé à élaborer une macro qui crée un 'tableau virtuel' contenant les lignes et qui, en fin de code, transpose ce tableau sur la 4ème feuille.

Le problème, c'est que lors de cette transposition, le format date change et passe au format 'mm/jj/aaaa'. Si mes observations sont exactes, ceci ne se produit que pour les dates dont le jour est < ou = à 12, pour les autres dates, le format reste 'jj/mm/aaaa'.

Mes 2 questions :

1. Comment faire pour que la méthode transpose conserve TOUTES mes dates au format 'jj/mm/aaaa'.

2. Comment faire pour qu'au regard de chaque ligne que recense ma macro dans la feuille 'Consolidation', dans la colonne A apparaisse le n° du compte ad hoc ?

Merci beaucoup à tous par avance. [file name=ForumXL.zip size=10999]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ForumXL.zip[/file]
 

Pièces jointes

Bonjour

Pour ton problème de date je n'ai pas eu de problème chez moi elles passent bien en jj/mm/aaaa

Si le problème persiste chez toi essaies d emodifier cette ligne

tablo(3, X) = .Cells(k, j).Offset(0, 0)

par

tablo(3, X) = CDate(.Cells(k, j).Offset(0, 0))


Sinon je t'ai rajouté la ligne pour prendre le numero de compte

Bonne journée [file name=ForumXL_20050920081147.zip size=10700]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ForumXL_20050920081147.zip[/file]
 

Pièces jointes

Bonjour le forum,
Bonjour Pascal.

Merci pour ta modif afin que le n° de compte figure dans mes résultats.

Par contre malgré ta modif 'tablo(3, X) = CDate(.Cells(k, j).Offset(0, 0))', rien y fait, chez moi j'ai toujours certaines dates qui se transposent au format mm/jj/aaaa.

Et ce sont pourtant bien des lignes au format date, mais simplement c'est du 'mm/jj/aaaa' ! Pourtant

C'est vraiment très étrange que ça ne le fasse pas partout ?! Sans indiscrétion, tu possèdes quelle version d'Excel ? 2003 comme moi ?

En tout cas ce problème reste en suspens ;
Remerciements renouvelés pour le reste 😉

@+
 
RE,

Même avec ta nouvelle proposition que je viens d'intégrer dans mon code, ça ne fonctionne toujours pas.

En fait, je crois que le problème vient d'ailleurs. Je m'explique.
Dans mon fichier joint, si on saisit par exemple 8 dans l'inputbox, dans ma feuille 'Consolidation' j'aurai 3 lignes, dont, à la colonne 'C', 3 dates (en C2, C3 et C4).

- la première est '24/08/2005' (range'C2')... qd je regarde les propriétés de la cellule, dans l'onglet 'nombre', cette cellule est bien au format de type date, cad '*jj/mm/aaaa'. Mais là où ça devient bizarre, c'est que si par exemple en G2 je tape la formule '=droite(C2;4)', j'obtiens '2005' !

- par contre, pour la 2ème et 3ème ligne (ranges 'C3' et 'C4'), les propriétés de la cellule sont strictement les mêmes ('*jj/mm/aaaa'), mais là par contre, si je fais ma formule '=droite(C3;4)' ou '=droite(C4;4)', j'obtiens respectivement '8633' et '8572' (car les dates représentent respectivement '38633' et '38572' au format 'maison' d'Excel).

En bref, suite à la transposition, avec 8 dans mon inputbox, j'obtiens 3 occurences :
1 au format 'jj/mm/aaaa' (youpi !!) mais visiblement pas au format date ! 🙁
2 au format 'mm/jj/aaaa' (snif !!), et manifestement au format date ! 🙁

Sacré Excel...

Merci, @+
 
Bonjour law, pascal

avec excel 2002 pas de souci pour le retour de la date ???

law, tu peux peut etre tenter de forcer le format au moment du renvoi de la date sur la feuille consolidation :

En remplacant le transpose par tout ca :

l = 2
With Sheets('Consolidation')
&nbsp; &nbsp;
For i = 1 To UBound(tablo, 2)
&nbsp; &nbsp; &nbsp; &nbsp;
For j = 1 To UBound(tablo)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Select Case j
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case 3
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Cells(l, 3) = CDate(tablo(j, i))
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
' .Cells(l, 3) = Format(CDate(tablo(j, i)), 'dd/mm/yyyy')
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
Case Else
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .Cells(l, j) = tablo(j, i)
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
End Select
&nbsp; &nbsp; &nbsp; &nbsp;
Next j
&nbsp; &nbsp; &nbsp; &nbsp; l = l + 1
&nbsp; &nbsp;
Next i
End With

sans garanti de réussite, ne rencontrant pas ton souci.

salut
 
Bonsoir Law, Pascal76, Hervé,

Je suis sous Excel 2003 et je rencontre le même problème que Law...

Cela dit, je me confronte souvent à ce genre de problème lorsque je stocke des valeurs 'Date' dans un tableau (généralement de type 'Variant' dans mon cas) et que je réinjecte le tout - d'une seule traite - dans une autre plage de cellules, du style suivant :
Range(Cells(1, 1), Cells(UBound(TabTemp, 1), UBound(TabTemp, 2))).Value = TabTemp
Le seul moyen efficace que j'ai trouvé pour contourner ce problème, c'est de ne pas utiliser cette pratique dans ce cas et de procéder à la réaffectation des cellules une par une au moyen d'une simple boucle. C'est forcément un peu plus long au traitement, mais c'est efficace...

Aussi Law, tu trouveras ci-joint ton fichier modifié en conséquence pour test. Pour éviter les multiples jeux de boucles et afin d'optimiser le temps de traitement global, j'ai préféré reprendre la procédure dans son ensemble :
Sub GdLivre()
Dim ws As Worksheet
Dim TabTemp As Variant, NumMois As Variant
Dim
L As Long, LignConsol As Long
Dim
C As Integer
Dim
ColConsol As Byte

      NumMois = Application.InputBox(prompt:= _
                  'Veuillez saisir le numéro du mois - Exemple, pour Août, ''8''', _
                  Title:='choix du mois...', Type:=1)
           
      If NumMois = False Or NumMois = '' Then Exit Sub
      Application.ScreenUpdating = False
      With Sheets('Consolidation')
            .Rows('2:65536').Delete
            LignConsol = 1
            For Each ws In Worksheets
                  If ws.Name <> 'Consolidation' Then
                        TabTemp = ws.UsedRange.Value
                        For C = 1 To UBound(TabTemp, 2) Step 5
                              For L = 3 To UBound(TabTemp, 1)
                                    If Month(TabTemp(L, C + 1)) = NumMois Then
                                          LignConsol = LignConsol + 1
                                          .Cells(LignConsol, 1).Value = TabTemp(1, C)
                                          For ColConsol = 2 To 5
                                                .Cells(LignConsol, ColConsol).Value = _
                                                                  TabTemp(L, C + ColConsol - 2)
                                          Next ColConsol
                                    End If
                              Next L
                        Next C
                  End If
            Next ws
      End With
      Application.ScreenUpdating = True
End Sub
Cordialement, [file name=PourLaw.zip size=10442]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourLaw.zip[/file]
 

Pièces jointes

Bonsoir tout le monde,

Merci à tous, notamment à Pascal76, Hervé et myDearFriend!

Ca fonctionne avec ta macro et en effet (c'est vraiment sympa d'avoir tout repris !!), c'est un poil plus long lors de l'exécution, mais au moins ça fonctionne parfaitement ! 🙂

Donc voilà, merci beaucoup à tous.

Et heu... s'il fallait quand même trouver une morale à tout ça, c'est que les dernières versions d'un prog' ne sont pas toujours les meilleures... 🙂

@+
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
337
Réponses
7
Affichages
580
Réponses
6
Affichages
540
  • Question Question
Microsoft 365 erreur de date
Réponses
2
Affichages
554
  • Question Question
Réponses
25
Affichages
1 K
Retour