Jour/mois inverser apres Transpose
Bonjour,
En espérant que vous n'ayez pas trop mal aux cheveux
..J'aimerais que les dates dans le résultat de recherche soit en jj-mm-aaaa (bon.., vous vous en doutez toutes les dates ne le sont pas, juste celles de 1 à 12)
Dans la feuille "NE" toutes mes dates sont bonnes!
Donc je suppose que ce résultat "date inversé" est du "transpose" (macro rechercher du module1), qui convertit en mode texte et le colle par défaut au format américain?
Sub Rechercher()
Dim T(), i%, j%, n%, k%, At$, Pr$, Rin As Boolean
Application.ScreenUpdating = False
With Worksheets("RECHERCHE")
At = .Range("C3"): Pr = .Range("C6")
k = .Cells(.Rows.Count, 1).End(xlUp).Row
If k > 13 Then .Range("A14:D" & k).ClearContents: k = 0
End With
If At <> "" Then k = 1
If Pr <> "" Then k = 2
If k = 0 Then Exit Sub
With [NEatelier]
For i = 1 To .Rows.Count
Select Case k
Case 1: If .Cells(i, 1) = At Then Rin = True
Case 2: If .Cells(i, 2) = Pr Then Rin = True
Case 3: If .Cells(i, 1) = At And .Cells(i, 2) = Pr Then Rin = True
End Select
If Rin Then
ReDim Preserve T(3, n)
For j = 0 To 3
T(j, n) = .Cells(i, j + 2)
Next j
n = n + 1: Rin = False
End If
Next i
End With
If n > 0 Then Worksheets("RECHERCHE").Range("A14").Resize(n, 4).Value = _
WorksheetFunction.Transpose(T)
ActiveWindow.ScrollRow = 14
End SubPour l'instant je trichais en formatant les cellules de D14 a D500 en mm-jj-aaaa.
Mais je suis sur qu'il y a une solution "propre" pour régler ce problème?
Fichier sans mot de passe et onglet visible pour tous
Bonjour,
ça te dérangerait de mettre un fichier exploitable directement (barre des onglets visible, protections désactivées, etc) qu'on n'ait pas tous x manipulations à faire pour essayer de t'aider ?
Tant que tu y es donne les manips à faire pour tomber sur ton exemple...
Sinon le Transposer() n'y est pour rien. vba travaille avec des dates en anglais mm/dd/yy et lors des collés excel se plante en interprétant la date si le n° de jour peut également être un n° de mois (07/12/16 : ambiguité, 25/12/16 : aucune ambiguité)
eric
Bonjour diablo7431
ça j'adore dans le le ThisWorkbook
Private Sub Workbook_Open()
Dim psw$, i%
For i = 1 To Worksheets.Count
psw = [Crit].Cells(1, 16)
Worksheets(i).Protect UserInterfaceOnly:=True, Password:=psw
Next
Worksheets("RECHERCHE").Range("C3").ClearContents
ActiveWindow.DisplayWorkbookTabs = False
Worksheets("RECHERCHE").Activate
End SubSinon remplace :
If n > 0 Then Worksheets("RECHERCHE").Range("A14").Resize(n, 4).Value = _
WorksheetFunction.Transpose(T)par
If n > 0 Then Worksheets("RECHERCHE").Range("A14").Resize(n, 4).FormulaLocal = _
WorksheetFunction.Transpose(T)klin89
Bonjour eriiic et Klin89,
eriiic
ça te dérangerait de mettre un fichier exploitable directement (barre des onglets visible, protections désactivées, etc) qu'on n'ait pas tous x manipulations à faire pour essayer de t'aider ?
Non pas du tout
Tant que tu y es donne les manips à faire pour tomber sur ton exemple...
eh bé!
Aussi non , merci Klin89
Ta solution fonctionne, mais! d'après ce que je comprend "FormulaLocal" utilise les paramètres system, donc si celui ci est au format américain il affichera les dates dans ce format là?
ça j'adore dans le le ThisWorkbook
ActiveWindow.DisplayWorkbookTabs = False
PQ? je ne suis pas seul à l'utiliser, et je cherche juste à avoir un classeur utilisable, même par ceux qui ne maitrise pas le monde de l’informatique
A moins que tu pensais à autre chose?
Non pas du tout
(voilà qui est fait) , mais je ne pensais pas que, cliquer sur "Admin" taper "test" était aussi dérangeant!! , c'est la seul manip à faire pour tout afficher! Tant que tu y es donne les manips à faire pour tomber sur ton exemple...
eh bé!
l'exemple, même "les", est affiché et expliqué, il suffisait de taper un des projets (mis dans l'ex) dans la recherche et de voir le résultat pour le comparer au même projet dans la feuille "NE" avec la bonne date.
Ecoute, pour répondre à une question on fouille parfois un peu partout.
Donc masquer la barre d'onglets, les protéger oui ça gêne et ça donne envie de refermer le classeur.
Et pour trouver ton 14041 j'ai dû me taper les 3 choix Atelier, ça commence à faire beaucoup.
Donc pas de soucis, j'ai refermé et n'ouvrirai plus tes fichiers sur tes éventuelles autres demandes.
Tu te passeras de mes services, et de bien d'autres aussi je pense, si tu t'en tiens au minimum en pensant "qu'ils se démerdent débrouillent...".
eric
oh là, on ce calme....
Je ne voulais pas t’offenser, jusqu'à présent j'ai toujours été coopératif sur les aides et ce qu'on me demandais !
Jamais j'ai voulu faire comprendre:
"qu'ils se
démerdentdébrouillent..."
Pour preuve, j'ai refais le fichier sans mdp et tout onglets visible (spécialement, pour les demandes d'aide), car comme je l'ai dis:
je ne pensais pas que, cliquer sur "Admin" taper "test" était aussi dérangeant!!
mais, si effectivement, ça peut être "gênant", et bien voilà le fichier a été refait.
Je peut comprendre que sur toutes les demandes d'aide, si vous devez à chaque fois faire plusieurs manip, cela fait beaucoup
Bon, j'avoue que pour les explications, j'aurais pu être plus clair et les donner, complètes, directement
mea-culpa
Bonsoir,
Fais-moi plaisir ! Tu modifies ceci :
If Rin Then
ReDim Preserve T(3, n)
For j = 0 To 2
T(j, n) = .Cells(i, j + 2)
Next j
T(3, n) = CLng(.Cells(i, 5))
n = n + 1: Rin = False
End If
Next iEt tu ne touches surtout pas à la ligne d'affectation !
[Je n'apprécie pas vraiment qu'on tripatouille du code que j'ai produit sans savoir ce qu'on fait !]
NB- Je t'ai jusqu'à présent trouvé sympathique malgré des pratiques plutôt brouillonnes, mais là ça devient un peu limite...
Remarque : il convient que la cellule en E ne soit pas vide et contienne effectivement une date !
Une modification à la fois plus simple et plus fiable (car plus à se soucier du contenu des cellules) :
For j = 0 To 3
T(j, n) = .Cells(i, j + 2).Value2
Next jBonjour MFerrand
Tout dabors, merci pour:
For j = 0 To 3
T(j, n) = .Cells(i, j + 2).Value2
Next jet j'ai remis par la même occasion:
If n > 0 Then Worksheets("RECHERCHE").Range("A14").Resize(n, 4).FormulaLocal= _
WorksheetFunction.Transpose(T)[Je n'apprécie pas vraiment qu'on tripatouille du code que j'ai produit sans savoir ce qu'on fait !]
Je n'ai rien modifier! j'ai demandé une aide, on me donne une solution plausible, je test (jamais sur le fichier final, j'ai plusieurs copie au cas où, car je respect le travail fournis par chacun de vous).
NB- Je t'ai jusqu'à présent trouvé sympathique malgré des pratiques plutôt brouillonnes, mais là ça devient un peu limite...
Brouillonnes: comme je te l'avais dis, la majorité (pour ainsi dire, presque tout) des codes que tu pouvais lire, n'était pas de moi!
Je n'ai fait que copier/coller et adapté avec ce que je connaissais et comprenais en VBA.
un peu limite: je me suis expliqué et excusé
Au plaisir de te relire
PS/ Je voudrais encore une fois, présenter mes excuses à tous ceux que j'ai pu offusquer
If n > 0 Then Worksheets("RECHERCHE").Range("A14").Resize(n, 4).Value = _
WorksheetFunction.Transpose(T)Si j'ai mis Value, c'est que la bonne syntaxe est Value et non Formula ou un dérivé... !
oui, pardon c'est ce que je voulais mettre!
Je l'avais bien changé, j'ai juste copier/coller du mauvais fichier.