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

Transformation d'une date

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

G

Gilles52300

Guest
Bonjour,

Je cherche à récupérer une date dans une cellule donnée afin de la transformer en N° de ref.
seulement j'ai un code erreur "argument ou appel de procédure incorrect"
merci de votre aide.
Code:
Sub test()
Dim N°ref As String
Dim ref As Date
Dim jour As Variant, mois As Variant, an As Variant
ref = Range("C4")
jour = DatePart("dd", ref)
mois = DatePart("mm", ref)
an = DatePart("yyyy", ref)
N°ref = "an&mois&jour"
Active.Range("I4").Paste
End Sub
 
Re : Transformation d'une date

Bonjour,

on pourrait peut être coder ainsi :
Code:
Range("I4") = Format(Range("C4"), "ddmmyyyy")

prévoir un format texte dans la cellule de destination...

bon après midi
@+
 
Re : Transformation d'une date

Waouhhh!!!
Génial. Merci bien. Je me disais aussi pourquoi faire compliquer quand on peut faire simple.
Bon maintenant me reste plus qu'à l'implanter dans le corps de ma macro et faire que tout fonctionne.

Merci bien encore.
 
Re : Transformation d'une date

Bonsour® Pierrot93, Gilles52300

préférer dans ce cas plutôt :
Range("I4") = Format(Range("C4"), "yyyymmdd")
qui éventuellement permettra ultérieurement un tri alphanumérique ...
 
Re : Transformation d'une date

bonjour Modeste geedee,

merci bien de ta remarque. J'avais déjà opéré la modification.
Maintenant je suis en train de m'arracher les cheveux (enfin le peux qu'il me reste) à essayer de lui rajouter un suffixe qui pourrait s'incrémenter sous condition. ma ref se présente sous cette forme 'yyyymmdd-xx'
si la date du dessus = la date enregistré, alors ma ref, ou du moins la partie xx devrait s'incrementer de manière à avoir une ref différente à chaque fois.

j'en suis là et ce n'est pas encore fini. Si vous aviez une idée, je suis preneur. Merci.
Ceci n'est qu'une petite partie de ma macro.
Code:
Sub test()
            Dim ref As String, adr As String
            Dim z As Integer, ii As Integer
            'on recherche le N° de la ligne de la cellule vide
    With Sheets("Carnet").Range("A:A")
        Set c = .Find("", LookIn:=xlValues)
        If Not c Is Nothing Then
            Do
                adr = c.Address
                Range(adr).Activate
                'on défini ii avec le N° de la ligne adr
                ii = ActiveCell.Row
            Loop While c Is Nothing
        End If
'définition de la référence
            z = 0
ref = Format(Range("C" & ii), "yymmdd")      'je vois la remarque que la "Cii" est vide
ref = ref & -z

    If ("C" & ii) = ("C" & ii - 1) Then
        ref = ("A" & ii - 1)
        .Range("A" & ii) = ref + 1 'ça ne fonctionne pas
    End If
        If ("C" & ii) > ("C" & ii - 1) Then
        .Range("A" & ii) = ref + z
    End If

End Sub
 
Re : Transformation d'une date

je n'ai guère évolué depuis mon dernier post.
je sèche bien que j'ai apporté quelques modifications. dont je vais vous faire part.
j'ai l'impression que c'est dans la comparaison que ça ne va pas..... le sujet est à la fin du code inséré.
Code:
Sub test2()
'pour rentrer les nouvelles éprouvettes

'définition des variables
Dim Client As String, RealisePar As String, LieuFabriq As String
Dim Fabriquant As String, Serrage As String, Eprouvette As String
Dim Dosage As String, Lieu As String, Projet As String
Dim Affaissement(12) As Long
Dim NbreEprouvette(3) As String, AgeEprouvette(3) As String, ref As String
Dim adr As String, N°Eprouvette As String, Partie As String
Dim DateReception As Date, DatePrelevement As Date
Dim ii As Integer, zz As Integer, yy As Integer

'Appel de L'userform3
UserForm3.Show
'enregistrement des données "date" et définitions des variables tableaux
                NbreEprouvette1 = UserForm3.ComboBox1.Text
                NbreEprouvette2 = UserForm3.ComboBox3.Text
                NbreEprouvette3 = UserForm3.ComboBox5.Text
                AgeEprouvette1 = UserForm3.ComboBox2.Text
                AgeEprouvette2 = UserForm3.ComboBox4.Text
                AgeEprouvette3 = UserForm3.ComboBox6.Text
                DateReception = UserForm3.TextBox1.Text
                DatePrelevement = UserForm3.TextBox2.Text
                Affaissement1 = UserForm3.TextBox24.Text
                Affaissement2 = UserForm3.TextBox25.Text
                Affaissement3 = UserForm3.TextBox26.Text
                Affaissement4 = UserForm3.TextBox27.Text
                Affaissement5 = UserForm3.TextBox28.Text
                Affaissement6 = UserForm3.TextBox29.Text
                Affaissement7 = UserForm3.TextBox30.Text
                Affaissement8 = UserForm3.TextBox31.Text
                Affaissement9 = UserForm3.TextBox32.Text
                Affaissement10 = UserForm3.TextBox33.Text
                Affaissement11 = UserForm3.TextBox34.Text
                Affaissement12 = UserForm3.TextBox35.Text
               
          With Sheets("Carnet").Unprotect
          End With
'on recherche le N° de la ligne de la cellule vide
    With Sheets("Carnet").Range("A:A")
        Set c = .Find("", LookIn:=xlValues)
        If Not c Is Nothing Then
            Do
                adr = c.Address
                Range(adr).Activate
                'on défini ii avec le N° de la ligne adr
                ii = ActiveCell.Row
            Loop While c Is Nothing
        End If
        'on regarde si il a quelques chose de noté dans Eprouvette1
                    If NbreEprouvette1 = "" Then
                    GoTo Epreuve2
                    End If
                    
                    If NbreEprouvette1 > 0 Then
                          
                        'on colle les données de l'userform dans les cellules concernées
                        
                        .Range("B" & ii) = UserForm3.ComboBox7.Text                 'Client
                        .Range("I" & ii) = UserForm3.TextBox3.Text                      'RealisePar
                        .Range("J" & ii) = UserForm3.ComboBox10.Text                'LieuFabriq
                        .Range("AC" & ii) = UserForm3.ComboBox11.Text             'Fabriquant
                        .Range("H" & ii) = UserForm3.ComboBox9.Text                 'Serrage
                        .Range("G" & ii) = Eprouvette                                               'Eprouvette
                        .Range("S" & ii) = UserForm3.ComboBox12.Text                'Dosage
                        .Range("T" & ii) = UserForm3.TextBox9.Text                      'Lieu
                        .Range("U" & ii) = UserForm3.TextBox10.Text                    'Projet
                        .Range("V" & ii) = UserForm3.TextBox11.Text                   'Partie
                        .Range("C" & ii) = DateReception                                      'DateReception
                        .Range("F" & ii) = DatePrelevement - 0                                    'DatePrelevement
                        .Range("W" & ii) = Affaissement1                                      'Affaissement
                        .Range("K" & ii) = UserForm3.TextBox12.Text                   'N°Eprouvette
                        .Range("L" & ii) = AgeEprouvette1                                       'AgeEprouvette
'définition de la référence
            z = 1
            ref = Format(Range("C" & ii), "yymmdd" & "00") 
            yy = CDate(DateReception)
            If yy = Range("C" & ii - 1).Value Then
              .Range("A" & ii) = Range("c" & ii - 1) + 1 'ça ne fonctionne pas
           End If
           If yy <> Range("C" & ii - 1).Value Then
              .Range("A" & ii) = ref + z
           End If
                        
                        If NbreEprouvette1 > 1 Then
merci de votre aide.
 
Re : Transformation d'une date

Bonjour Gilles, Modeste

pas tout compris de ton code, regarde peut être celui-ci à adapter à ton projet :
Code:
Dim ref1 As String, ref2 As String
ref1 = "20130517-04"
ref2 = Format(Date + 3, "yyyymmdd") & "-" & Format(Split(ref1, "-")(1) + 1, "00")

bonne journée
@+
 
Re : Transformation d'une date

Bonjour Pierrot93, Modeste,
Merci Pierrot93 pour ta réponse.
Je regarde au reveil et j'ai l'impression que pour le moment j'ai un soucis avec ma comparaison de date.

If ("C" & ii) = ("C" & ii - 1) Then

j'ai l'impression malgré que je rentre la même date dans la textbox et que ce soit la même date à l'affichage, que cela la mentionne différente.
 
Re : Transformation d'une date

Re,

If ("C" & ii) = ("C" & ii - 1) Then

vois pas trop à quoi cela correspond ??

j'ai l'impression malgré que je rentre la même date dans la textbox et que ce soit la même date à l'affichage, que cela la mentionne différente.

si tu veux comparer une date saisie dans un textbox à une date dans une cellule, utilise la fonction "cdate" :
Code:
If Range("A1").Value = CDate(TextBox1.Value) Then
 
Re : Transformation d'une date

Re,

merci pour ta préponse

If ("C" & ii) = ("C" & ii - 1) Then

c'est ma ligne test. "ii" étant le numéro de la ligne ou j'inscris mes données. mais je dois mal m'y prendre!

il n'est que 7:20 ici alors je vais finir de me préparer et je vais essayer de tout mettre en ordre tout à l'heure.
Je te tiens au courant de l'avancé.
merci encore.
 
[Résolu] : Transformation d'une date

Voilà après une journée de bidouillage, j'ai réussi à tout faire fonctionner correctement.
Concernant la ref, je lui ai apporté une modification car je n'ai pas réussi à l'incrementer correctement alors j'ai supprimé le "-" et maintenant plus de soucis.

Je vous remercie Pierrot et Modeste pour votre aide et contribution.
je vais poster un autre sujet car je voudrais savoir s'il est possible d'alleger mon travail.


Sujet résolu.
 
- 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
5
Affichages
910
  • Question Question
Microsoft 365 Problème macro
Réponses
4
Affichages
433
Réponses
6
Affichages
638
Réponses
8
Affichages
653
Réponses
4
Affichages
586
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…