IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Concatener un texte


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut Concatener un texte
    Bonjour

    Voici mon soucis, j'ai une table T_CodeDateSuivi qui est alimenté par une requête mis à jour (Code VBA dans le formulaire F_encodageDate),

    T_CodeDateSuivi contient les champs suivant :
    - CodeDateSuivi
    - Semaine
    - Date
    - CodeDateSuivi_RFP
    - CodeDateSuivi_RIM
    - Edition_RFP
    - Edition_RFP

    Voici le code utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    Private Sub btnEncoder_Click()
    Dim SemaineVal As Integer
    Dim idate As Date
    Dim strsql As String
    'Vérifier que les valeurs saisies sont bien des dates
    If IsDate(Me.txtDateDebut) And IsDate(Me.txtDatefin) Then
    'Vérifier l'ordre des dates saisies
        If Me.txtDateDebut < Me.txtDatefin Then
            'Purger la table T_Tampon
            DoCmd.SetWarnings False
            DoCmd.RunSQL "DELETE T_CodeDateSuivi FROM T_Tampon;"
            'Réinitialiser CodeDateSuivi
            DoCmd.RunSQL "ALTER TABLE [T_Tampon] ALTER [CodeDateSuivi] COUNTER(1,1) ;"
            'Boucler la valeur avec un pas de 7
            For idate = Me.txtDateDebut To Me.txtDatefin Step 7
                SemaineVal = Semaine(idate)
                'Créer la requête SQL et ajouter dans T_Tampon
                strsql = "INSERT INTO T_Tampon ( Semaine, [Date] )" _
                        & " VALUES (" & SemaineVal & ",#" & Format(idate, "mm/dd/yyyy") & "#)"
                DoCmd.RunSQL strsql
            Next idate
            'Réinitialiser les colonnes (autres que CodeDateSuivi) de T_DateSuivi
            DoCmd.RunSQL "UPDATE T_DateSuivi SET T_DateSuivi.Semaine = Null," _
                      & "T_DateSuivi.Date = Null, T_DateSuivi.CodeDateSuivi_RFP = Null," _
                      & "T_DateSuivi.CodeDateSuivi_RIM = Null;"
            'Regarnir T_DateSuivi avec T_Tampon
            '(transfert ligne par ligne, des colonnes de T_Tampon dans T_DateSuivi)
            DoCmd.RunSQL "UPDATE T_DateSuivi INNER JOIN T_Tampon " _
                               & "ON T_DateSuivi.CodeDateSuivi = T_Tampon.CodeDateSuivi " _
                               & "SET T_DateSuivi.Semaine = [T_Tampon].[Semaine], " _
                               & "T_DateSuivi.Date = [T_Tampon].[Date], " _
                               & "T_DateSuivi.CodeDateSuivi_RFP = [T_Tampon].[CodeDateSuivi_RFP], " _
                               & "T_DateSuivi.CodeDateSuivi_RIM = [T_Tampon].[CodeDateSuivi_RIM];"
            DoCmd.SetWarnings True
        Else
            MsgBox " La date de fin est antérieure à la date de début ! corrigez !"
            Exit Sub
        End If
    Else
        MsgBox "Vous n'avez pas saisi des dates !"
        Exit Sub
    End If
    Me.T_DateSuivi.Requery
    End Sub
    et la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     
    '---------------------------------------------------------------------------------------
    ' CopyRight : Ce code est librement ditribuable, copiable et imprimable, sous la seule
    '             contrainte de laisser visible la totalité des commentaires identifiant
    '             l'auteur de ce code, ses coordonnées et ce copyright et ce, sans
    '             limitation de durée dans le temps.
    '---------------------------------------------------------------------------------------
    ' Module    : modDateTimeFunctions
    ' Date      : vendredi 21 décembre 2007 13:53
    ' Auteur    : Maxence Hubiche (mhubiche@club-internet.fr -  06.18.61.14.35)
    '---------------------------------------------------------------------------------------
     
    Public Function Semaine(LaDate As Variant) As Variant
    '---------------------------------------------------------------------------------------
    ' Procedure : Semaine
    ' Date      : vendredi 21 décembre 2007 13:56
    ' Auteur    : Maxence Hubiche (mhubiche@club-internet.fr -  06.18.61.14.35)
    ' Objet     : Renvoie le numéro de la semaine pour le calendrier français
    ' Spec      : Cette fonctino empèche le débordement en semaine 53, en mettant les jours
    '               de la semaine 53 en semaine 1
    ' Retour    : Renvoie un Byte (n° de la semaine) ou Null si l'argument n'était pas une
    '               date
    '---------------------------------------------------------------------------------------
    '
        Dim bytTemp As Byte
        If IsDate(LaDate) Then
            bytTemp = CByte(DatePart("ww", LaDate, vbMonday, vbFirstFourDays)) Mod 53
            If bytTemp = 0 Then bytTemp = 1
            Semaine = bytTemp
        Else
            Semaine = Null
        End If
    End Function
    j'aimerai que le mot "Semaine " apparaisse devant le n° de Semaine
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Je dirais qu'il suffit de remplacer la ligne :
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Semaine = "Semaine " & bytTemp

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    J'ai une erreur d'éxécution 13
    imcompatibilité de type

  4. #4
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Effectivement la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function Semaine(LaDate As Variant) As Variant
    doit plutôt être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Function Semaine(LaDate As Variant) As String

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    J'ai toujours la même erreur 13 - imcompatibilité de type

  6. #6
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Le code complet est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    Private Sub btnEncoder_Click()
    Dim SemaineVal As String
    Dim idate As Date
    Dim strsql As String
    'Vérifier que les valeurs saisies sont bien des dates
    If IsDate(Me.txtDateDebut) And IsDate(Me.txtDatefin) Then
    'Vérifier l'ordre des dates saisies
        If Me.txtDateDebut < Me.txtDatefin Then
            'Purger la table T_Tampon
            DoCmd.SetWarnings False
            DoCmd.RunSQL "DELETE T_CodeDateSuivi FROM T_Tampon;"
            'Réinitialiser CodeDateSuivi
            DoCmd.RunSQL "ALTER TABLE [T_Tampon] ALTER [CodeDateSuivi] COUNTER(1,1) ;"
            'Boucler la valeur avec un pas de 7
            For idate = Me.txtDateDebut To Me.txtDatefin Step 7
                SemaineVal = Semaine(idate)
                'Créer la requête SQL et ajouter dans T_Tampon
                strsql = "INSERT INTO T_Tampon ( Semaine, [Date] )" _
                        & " VALUES ('" & SemaineVal & "',#" & Format(idate, "mm/dd/yyyy") & "#)"
                DoCmd.RunSQL strsql
            Next idate
            'Réinitialiser les colonnes (autres que CodeDateSuivi) de T_DateSuivi
            DoCmd.RunSQL "UPDATE T_DateSuivi SET T_DateSuivi.Semaine = Null," _
                      & "T_DateSuivi.Date = Null, T_DateSuivi.CodeDateSuivi_RFP = Null," _
                      & "T_DateSuivi.CodeDateSuivi_RIM = Null;"
            'Regarnir T_DateSuivi avec T_Tampon
            '(transfert ligne par ligne, des colonnes de T_Tampon dans T_DateSuivi)
            DoCmd.RunSQL "UPDATE T_DateSuivi INNER JOIN T_Tampon " _
                               & "ON T_DateSuivi.CodeDateSuivi = T_Tampon.CodeDateSuivi " _
                               & "SET T_DateSuivi.Semaine = [T_Tampon].[Semaine], " _
                               & "T_DateSuivi.Date = [T_Tampon].[Date], " _
                               & "T_DateSuivi.CodeDateSuivi_RFP = [T_Tampon].[CodeDateSuivi_RFP], " _
                               & "T_DateSuivi.CodeDateSuivi_RIM = [T_Tampon].[CodeDateSuivi_RIM];"
            DoCmd.SetWarnings True
        Else
            MsgBox " La date de fin est antérieure à la date de début ! corrigez !"
            Exit Sub
        End If
    Else
        MsgBox "Vous n'avez pas saisi des dates !"
        Exit Sub
    End If
    Me.T_DateSuivi.Requery
    End Sub
     
    '---------------------------------------------------------------------------------------
    ' CopyRight : Ce code est librement ditribuable, copiable et imprimable, sous la seule
    '             contrainte de laisser visible la totalité des commentaires identifiant
    '             l'auteur de ce code, ses coordonnées et ce copyright et ce, sans
    '             limitation de durée dans le temps.
    '---------------------------------------------------------------------------------------
    ' Module    : modDateTimeFunctions
    ' Date      : vendredi 21 décembre 2007 13:53
    ' Auteur    : Maxence Hubiche (mhubiche@club-internet.fr -  06.18.61.14.35)
    '---------------------------------------------------------------------------------------
     
    Public Function Semaine(LaDate As Variant) As String
    '---------------------------------------------------------------------------------------
    ' Procedure : Semaine
    ' Date      : vendredi 21 décembre 2007 13:56
    ' Auteur    : Maxence Hubiche (mhubiche@club-internet.fr -  06.18.61.14.35)
    ' Objet     : Renvoie le numéro de la semaine pour le calendrier français
    ' Spec      : Cette fonctino empèche le débordement en semaine 53, en mettant les jours
    '               de la semaine 53 en semaine 1
    ' Retour    : Renvoie un Byte (n° de la semaine) ou Null si l'argument n'était pas une
    '               date
    '---------------------------------------------------------------------------------------
    '
        Dim bytTemp As Byte
        If IsDate(LaDate) Then
            bytTemp = CByte(DatePart("ww", LaDate, vbMonday, vbFirstFourDays)) Mod 53
            If bytTemp = 0 Then bytTemp = 1
            Semaine = "Semaine " & bytTemp
        Else
            Semaine = Null
        End If
    End Function

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2013
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Génial !! je ne sais pas comment ta fait mais ca fonctionne nikel chrome ==> résolu

  8. #8
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 222
    Points
    58 222
    Billets dans le blog
    11
    Par défaut
    Modification sur les lignes :
    • 2 : pour mettre la variable en string.
    • 19 : pour mettre ' car SemaineVal est du texte

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Concatener un texte et le convertir en date
    Par Trebor dans le forum Excel
    Réponses: 6
    Dernier message: 01/12/2014, 08h38
  2. Réponses: 35
    Dernier message: 21/11/2007, 19h59
  3. Group By et concatenation de texte ?
    Par Olif_C dans le forum Langage SQL
    Réponses: 4
    Dernier message: 13/04/2006, 18h33
  4. Concatenation et Prendre la valeur d'un input de type Text
    Par pidu dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 20/02/2006, 16h58
  5. [C#] Concatenation dans label Text
    Par Oberown dans le forum ASP.NET
    Réponses: 6
    Dernier message: 11/01/2005, 10h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo