Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Transfert listbox, problème les dates

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

Scorpio

XLDnaute Impliqué
Bonjour à tous, et bonne année à tous les membres.
J'ai téléchargé ce classeur, que j'aimerais bien utilisé, mais mes connaissances en code sont très insufisante pour faire des corrections,
ainsi je m'adresse à vous, pour vous demander un coup de pouce, et je vous en remercie.
En fait, dans le formulaire s'ouvrant en feuille "BD", je fais une sélection et je la transfert dans la feuille "Result".
Alors, les dates en feuille "BD" sont (mercredi, 30 mai 2022, et les dates reçues dans la feuille "Result" sont 30.05.2022)
Et je voudrais les dates longues dans la feuille "Result",

Merci de votre aide, à +++
Scorpio
 

Pièces jointes

Bonjour Scorpio,
Le plus simple est peut être à la fin du transfert d'ajouter :
VB:
  With Sheets("Result")
    For i = 2 To .Range("E65500").End(xlUp).Row
        .Cells(i, "E") = Format(.Cells(i, "E"), "dddd dd mmmm yyyy")
        .Cells(i, "F") = Format(.Cells(i, "E"), "dddd dd mmmm yyyy")
    Next i
  End With
Ce qui est bizarre c'est que même sous le bon format de cellule, le collage s'effectue sous le bon format mais pas pour toutes les cellules.
Au moins avec ce rajout tout est correct.
 
Re,
A tester, mais j'ai l'impression qu'on peut remplacer :
Code:
  f.[A2].Resize(n) = Application.Index(Tbl, , 1) 'Société
  f.[B2].Resize(n) = Application.Index(Tbl, , 2) 'Compte
  f.[C2].Resize(n) = Application.Index(Tbl, , 3) 'Somme
  f.[D2].Resize(n) = Application.Index(Tbl, , 4) 'Facture N°
  f.[E2].Resize(n) = Application.Index(Tbl, , 5) '"dddd dd mmmm yyyy") 'Date du payement
  f.[F2].Resize(n) = Application.Index(Tbl, , 6) 'Echéance le:
  f.[G2].Resize(n) = Application.Index(Tbl, , 7) 'Année:
  f.[H2].Resize(n) = Application.Index(Tbl, , 8) 'Mois:
  With Sheets("Result")
    For i = 2 To .Range("E65500").End(xlUp).Row
        .Cells(i, "E") = Format(.Cells(i, "E"), "dddd dd mmmm yyyy")
        .Cells(i, "F") = Format(.Cells(i, "E"), "dddd dd mmmm yyyy")
    Next i
  End With
par
Code:
f.Range("$A$2").Resize(1+UBound(Tbl, 1), 1+UBound(Tbl, 2)) = Tbl
Le format date est correct, si le format des cellules est le bon.
 
Dernière édition:
Bonsoir sylvanu,
Super, et merci de bien vouloir me donner de l'aide.
j'ai ajouté le petit bout de code en #2, et cela fonctionne , HI,HA
Je pense que c'est bon pour moi, merci sylvanu, et très bonne soirée.
Scorpio
 
Bonsoir le Fil
On pourrait aussi utiliser un truc du genre , pour éviter la Boucle.
VB:
Dim DerLgn As Long
With f
 DerLgn = .Cells(.Rows.Count, 5).End(xlUp).Row
          .Range(.Cells(2, 5), .Cells(DerLgn, 6)).NumberFormat = "dddd dd mmmm yyyy"
'ou
'         .Cells(2, 5).Resize(DerLgn, 2).NumberFormat = "dddd dd mmmm yyyy"
End With
Jean marie
 
Dernière édition:
Bonjour ChTi,
Avec cette ligne du post #3 :
VB:
f.Range("$A$2").Resize(1+UBound(Tbl, 1), 1+UBound(Tbl, 2)) = Tbl
On évite tout ce code ainsi que la boucle car la mise en forme des colonnes est conservée.
Ce qui est bluffant c'est que si le transfert se fait via le code de Scorpio alors la mise en forme des colonnes n'est pas toujours pris en compte, elle est correcte sur certaines lignes mais pas sur d'autres.
Avec le transfert direct array/cellules la mise en forme est conservée. Bizarre.
 
Bonjour Sylvanu
Juste 1 précision si tu me permet:
Correction de cette ligne, 2 F .Cells(i, "F") = Format(.Cells(i, "F"), "dddd dd mmmm yyyy")
Mais ça marche super bien et je te remercie.
Et, si je peux demander encore une chose ;
J'aimerais compter le NB de lignes de ma sélection, j'ai fait cette ligne ;
Me.NbLignes.Caption = n & " Facture(s)" 'NB de ligne slectionnée
Mais cela ne fonctionne pas, et je ne sais pas ou la mettre, pourrais-tu m'aider, je te remercie et
très bonne journée.
 
Re,
Comme vous l'avez remarqué, la listbox est traité via un array ( ici nommé Tbl).
Donc le nombres de factures est :
VB:
NbFactures=1 + UBound(Tbl)

et je ne sais pas ou la mettre
Quoi ? Calculer le nombre de factures ou où l'afficher ?
Où l'afficher, j'en sais rien.
Ou mettre le calcul, n'importe où après la ligne Tbl = Me.ListBox1.List où on fait le transfert listbox dans Tbl.
 
- 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

Réponses
7
Affichages
211
Réponses
12
Affichages
365
Réponses
2
Affichages
82
Réponses
11
Affichages
723
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…