Transformation d'une date

Gilles52300

XLDnaute Junior
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
 

Gilles52300

XLDnaute Junior
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.
 

Gilles52300

XLDnaute Junior
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
 

Gilles52300

XLDnaute Junior
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.
 

Pierrot93

XLDnaute Barbatruc
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
@+
 

Gilles52300

XLDnaute Junior
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.
 

Pierrot93

XLDnaute Barbatruc
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
 

Gilles52300

XLDnaute Junior
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.
 

Gilles52300

XLDnaute Junior
[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.
 

Discussions similaires

Réponses
5
Affichages
244

Statistiques des forums

Discussions
312 490
Messages
2 088 875
Membres
103 980
dernier inscrit
grandmasterflash38