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

VBA Access Discussion :

Problème de dépassement de capacité


Sujet :

VBA Access

  1. #21
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    OK ba c'est ce que j'ai fait, mais j'ai toujours pas de zéro avant mes numéro de telephone

  2. #22
    Invité
    Invité(e)
    Par défaut
    Re

    Remets ton code complet après toutes les transformations que tu as fait.

    Starec

  3. #23
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 94
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par moilou2 Voir le message
    OK ba c'est ce que j'ai fait, mais j'ai toujours pas de zéro avant mes numéro de telephone
    Si tu as pas resaisie les numéros c normal, la conversion des données numériques en texte quand tu change de type ne va pas t'ajouter les zéros automatiquement.

  4. #24
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    Private Sub cmdValider_click()
    Dim sql, Mail, Pays, Ville, erreur, Societe, NomInterlocuteur, PrenomInterlocuteur, Adresse, CP, Portable, Fixe, Fax As String
    Dim ID_Fournisseur As Integer
    Dim oRst As DAO.Recordset
    Dim odb As DAO.Database
     
    'Test si des champs sont null : si oui message d'erreur et arrrét
    If IsNull(Me.txtNomSociéte) Or IsNull(Me.txtNomInterlocuteur) Or IsNull(Me.txtPrenomInterlocuteur) Or IsNull(Me.txtAdresse) Or IsNull(Me.txtCP) Or IsNull(Me.txtVille) Or IsNull(Me.txtTélFixe) Then
        MsgBox ("Merci de Remplir les champs Obligatoires")
        Exit Sub
    End If
     
    'Test si le téléphone fixe est bien une suite de nombre : si non message d'erreur et arrrét
    If Not IsNumeric(Me.txtTélFixe) Then
        MsgBox ("Le téléphone doit étre une suite de chiffre")
       Exit Sub
    End If
     
    'Test si le téléphone portable est bien une suite de nombre : si non message d'erreur et arrrét
    If Not IsNull(Me.txtTélPortable) And Not IsNumeric(Me.txtTélPortable) Then
        MsgBox ("Le téléphone doit étre une suite de chiffre")
       Exit Sub
    End If
     
    'Test si le fax est bien une suite de nombre : si non message d'erreur et arrrét
    If Not IsNull(Me.txtFax) And Not IsNumeric(Me.txtFax) Then
        MsgBox ("Le fax doit étre une suite de chiffre")
       Exit Sub
    End If
     
    'Affectation des valeur correspondantes aux variables
    Sociéte = UCase(Me.txtNomSociéte)
    NomInterlocuteur = UCase(Me.txtNomInterlocuteur)
    PrenomInterlocuteur = Me.txtPrenomInterlocuteur
    Adresse = Me.txtAdresse
    CP = Me.txtCP
    Ville = Me.txtVille
    Pays = Me.txtPays
    'si le champs telephone portable n'est pas remplit alors il prend la valeur 0
    If IsNull(Me.txtTélPortable) Then
        Portable = 0
        Else
        Portable = Me.txtTélPortable
    End If
     
    Fixe = Me.txtTélFixe
     
    'si le champs fax n'est pas remplit alors il prend la valeur 0
    If IsNull(Me.txtFax) Then
        Fax = 0
        Else
        Fax = Me.txtFax
    End If
     
    'si le champs mais n'est pas remplit alors il prend la valeur null
    If IsNull(Me.txtEmail) Then
        Mail = Null
        Else
        Mail = Me.txtEmail
    End If
     
    'on remplace les apostrophe pas des doubles apostrophes sinon la réquéte ne fonctionne pas
    Sociéte = Replace(Sociéte, "'", "''")
    NomInterlocuteur = Replace(NomInterlocuteur, "'", "''")
    PrenomInterlocuteur = Replace(PrenomInterlocuteur, "'", "''")
    Adresse = Replace(Adresse, "'", "''")
    Ville = Replace(Ville, "'", "''")
    Pays = Replace(Pays, "'", "''")
     
     
    Set odb = CurrentDb
    'réquete qui permet de connaitre le nombre de resultat que renvoie la réquéte qui cherche l'ID du fournisseur ayant le nom et le nom d'intelocuteur entrée
    sql = "SELECT Count(*) FROM (SELECT ID_Fournisseur FROM tbl_Fournisseurs where NomDeLaSociété = '" & Sociéte & "' and NomDeLinterlocuteur = '" & NomInterlocuteur & "' ) "
    Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
    oRst.OpenRecordset
     
    'si la réquete précédente renvoie un nombre différent de 0 alors la sociéte et le nom de l'interlocteur existe deja : message erreur et arrét
    If oRst.Fields(0).Value <> 0 Then
     
        If Not (oRst.EOF) Then
           message = MsgBox("L'interlocuteur  " & PrenomInterlocuteur & " " & NomInterlocuteur & " de la sociéte " & Sociéte & " est deja présent dans la base, vous ne pouvez l'ajouter une deuxiéme fois", vbCritical, "Doublon")
            Exit Sub
        End If
    End If
     
    'sinon recherche du prochain ID_fournisseur
    'on selectionne le maximum du champ ID_Fournisseur
    sql = "SELECT ID_Fournisseur FROM tbl_Fournisseurs where ID_Fournisseur =(SELECT MAX(ID_Fournisseur) FROM tbl_Fournisseurs)"
    Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
    'on lui additionne 1
    ID_Fournisseur = oRst.Fields("ID_Fournisseur").Value + 1
     
    'requete d'insertion dans la table tbl_Fournisseurs les valeurs
    sql = "INSERT into tbl_Fournisseurs values (" & ID_Fournisseur & ",'" & Sociéte & "','" & NomInterlocuteur & "','" & PrenomInterlocuteur & "','" & Adresse & "'," & CP & ",'" & Ville & "','" & Pays & "'," & Portable & "," & Fixe & "," & Fax & ",'" & Mail & "')"
     
    'Excecution de la requete
    odb.Execute (sql)
    message = MsgBox("Le fournisseur " & Sociéte & " a été correctement ajouté", vbInformation, "Ajout")
    oRst.Close
    odb.Close
    Set oRst = Nothing
    Set odb = Nothing
     
    DoCmd.Close
     
    End Sub

  5. #25
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Ba si j'ai fait de nouvelles saisies depuis mon formulaire, et sa ne me met pas de zéro, je pense donc que le problème vient du formulaire et non de la table, par ce que les numéro dont j'i rajouté des zéros dans la table y reste.

  6. #26
    Invité
    Invité(e)
    Par défaut
    Re

    Tu n'as pas bien lu tout ce que j'ai écrit.

    Sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim sql, Mail, Pays, Ville, erreur, Societe, NomInterlocuteur, PrenomInterlocuteur, Adresse, CP, Portable, Fixe, Fax As String
    Seule la variable Fax est de type String, toutes les autres sont de typesvariant, ce qui fait qu'Access dit s'il trouve des chiffres, et bien je dis que c'est un numérique, donc tout merde derrière.

    Il faut absolument que toutes tes variables soient correctement définies en String, ce qui n'est pas le cas ici.

    Refait une ligne par variable pour être sûr de ne pas te tromper. Chaque variable doit avoir son type.

    Starec

  7. #27
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    Private Sub cmdValider_click()
    Dim sql As String
    Dim Mail As String
    Dim Pays As String
    Dim Ville As String
    Dim erreur As String
    Dim Societe As String
    Dim NomInterlocuteur As String
    Dim PrenomInterlocuteur As String
    Dim Adresse As String
    Dim CP As String
    Dim Portable As String
    Dim Fixe As String
    Dim Fax As String
    Dim ID_Fournisseur As Integer
    Dim oRst As DAO.Recordset
    Dim odb As DAO.Database
     
    'Test si des champs sont null : si oui message d'erreur et arrrét
    If IsNull(Me.txtNomSociéte) Or IsNull(Me.txtNomInterlocuteur) Or IsNull(Me.txtPrenomInterlocuteur) Or IsNull(Me.txtAdresse) Or IsNull(Me.txtCP) Or IsNull(Me.txtVille) Or IsNull(Me.txtTélFixe) Then
        MsgBox ("Merci de Remplir les champs Obligatoires")
        Exit Sub
    End If
     
    'Test si le téléphone fixe est bien une suite de nombre : si non message d'erreur et arrrét
    If Not IsNumeric(Me.txtTélFixe) Then
        MsgBox ("Le téléphone doit étre une suite de chiffre")
       Exit Sub
    End If
     
    'Test si le téléphone portable est bien une suite de nombre : si non message d'erreur et arrrét
    If Not IsNull(Me.txtTélPortable) And Not IsNumeric(Me.txtTélPortable) Then
        MsgBox ("Le téléphone doit étre une suite de chiffre")
       Exit Sub
    End If
     
    'Test si le fax est bien une suite de nombre : si non message d'erreur et arrrét
    If Not IsNull(Me.txtFax) And Not IsNumeric(Me.txtFax) Then
        MsgBox ("Le fax doit étre une suite de chiffre")
       Exit Sub
    End If
     
    'Affectation des valeur correspondantes aux variables
    Sociéte = UCase(Me.txtNomSociéte)
    NomInterlocuteur = UCase(Me.txtNomInterlocuteur)
    PrenomInterlocuteur = Me.txtPrenomInterlocuteur
    Adresse = Me.txtAdresse
    CP = Me.txtCP
    Ville = Me.txtVille
    Pays = Me.txtPays
    'si le champs telephone portable n'est pas remplit alors il prend la valeur 0
    If IsNull(Me.txtTélPortable) Then
        Portable = 0
        Else
        Portable = Me.txtTélPortable
    End If
     
    Fixe = Me.txtTélFixe
     
    'si le champs fax n'est pas remplit alors il prend la valeur 0
    If IsNull(Me.txtFax) Then
        Fax = 0
        Else
        Fax = Me.txtFax
    End If
     
    'si le champs mais n'est pas remplit alors il prend la valeur null
    If IsNull(Me.txtEmail) Then
        Mail = Null
        Else
        Mail = Me.txtEmail
    End If
     
    'on remplace les apostrophe pas des doubles apostrophes sinon la réquéte ne fonctionne pas
    Sociéte = Replace(Sociéte, "'", "''")
    NomInterlocuteur = Replace(NomInterlocuteur, "'", "''")
    PrenomInterlocuteur = Replace(PrenomInterlocuteur, "'", "''")
    Adresse = Replace(Adresse, "'", "''")
    Ville = Replace(Ville, "'", "''")
    Pays = Replace(Pays, "'", "''")
     
     
    Set odb = CurrentDb
    'réquete qui permet de connaitre le nombre de resultat que renvoie la réquéte qui cherche l'ID du fournisseur ayant le nom et le nom d'intelocuteur entrée
    sql = "SELECT Count(*) FROM (SELECT ID_Fournisseur FROM tbl_Fournisseurs where NomDeLaSociété = '" & Sociéte & "' and NomDeLinterlocuteur = '" & NomInterlocuteur & "' ) "
    Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
    oRst.OpenRecordset
     
    'si la réquete précédente renvoie un nombre différent de 0 alors la sociéte et le nom de l'interlocteur existe deja : message erreur et arrét
    If oRst.Fields(0).Value <> 0 Then
     
        If Not (oRst.EOF) Then
           message = MsgBox("L'interlocuteur  " & PrenomInterlocuteur & " " & NomInterlocuteur & " de la sociéte " & Sociéte & " est deja présent dans la base, vous ne pouvez l'ajouter une deuxiéme fois", vbCritical, "Doublon")
            Exit Sub
        End If
    End If
     
    'sinon recherche du prochain ID_fournisseur
    'on selectionne le maximum du champ ID_Fournisseur
    sql = "SELECT ID_Fournisseur FROM tbl_Fournisseurs where ID_Fournisseur =(SELECT MAX(ID_Fournisseur) FROM tbl_Fournisseurs)"
    Set oRst = odb.OpenRecordset(sql, dbOpenDynaset)
    'on lui additionne 1
    ID_Fournisseur = oRst.Fields("ID_Fournisseur").Value + 1
     
    'requete d'insertion dans la table tbl_Fournisseurs les valeurs
    sql = "INSERT into tbl_Fournisseurs values (" & ID_Fournisseur & ",'" & Sociéte & "','" & NomInterlocuteur & "','" & PrenomInterlocuteur & "','" & Adresse & "'," & CP & ",'" & Ville & "','" & Pays & "'," & Portable & "," & Fixe & "," & Fax & ",'" & Mail & "')"
     
    'Excecution de la requete
    odb.Execute (sql)
    message = MsgBox("Le fournisseur " & Sociéte & " a été correctement ajouté", vbInformation, "Ajout")
    oRst.Close
    odb.Close
    Set oRst = Nothing
    Set odb = Nothing
     
    DoCmd.Close
     
    End Sub
     
    Private Sub Form_Load()
     
    Me.cmdValider.BackColor = RGB(230, 242, 255)
     
    With Me.cmdValider
            .MousePointer = 99
            .MouseIcon = LoadPicture(Application.CurrentProject.Path & "\Data\Harrow.cur")
    End With
     
    With Me.cmdValider
            .Picture = LoadPicture(Application.CurrentProject.Path & "\Data\Valider.jpg")
            .Caption = "Le Texte"
    End With
     
     
    End Sub
    Sa ne change rien!!!

    Je n'ai jamais vu sa c'est bizzard non? Tu est sur que l'on est obligé de procédé comme sa a chaque fois?

  8. #28
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 94
    Points : 79
    Points
    79
    Par défaut
    Non tu n'est pas obligé, lis bien les messages :

    si tu veux faire tous sur une meme ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim variable1 as String, variable2 as String, Variable 3 as String ...
    et non :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim variable1, variable2, Variable 3 as String ...

  9. #29
    Invité
    Invité(e)
    Par défaut
    Re

    Citation Envoyé par moilou2 Voir le message
    Je n'ai jamais vu sa c'est bizzard non? Tu est sur que l'on est obligé de procédé comme sa a chaque fois?
    Non, on peut tout mettre sur la même ligne, mais en mettant à chaque variable son type. Cette présentation est plus claire (avis personnel).

    Quels sont les types de champs dans ta table ?

    Car sur cette requête d'insertion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'requete d'insertion dans la table tbl_Fournisseurs les valeurs
    sql = "INSERT into tbl_Fournisseurs values (" & ID_Fournisseur & ",'" & Sociéte & "','" & NomInterlocuteur & "','" & PrenomInterlocuteur & "','" & Adresse & "'," & CP & ",'" & Ville & "','" & Pays & "'," & Portable & "," & Fixe & "," & Fax & ",'" & Mail & "')"
    Il y a des champs non entourés de simples quotes, donc du numérique.

    Starec

  10. #30
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    Ba il étaient en numérique avant, je vais les ai repassé en texte, mais je n'ai pas rechanger la syntaxe dans la requete. je vais essayer.

    Merci

  11. #31
    Invité
    Invité(e)
    Par défaut
    Ce qui a déjà été saisi risque de ne pas être modifié.

    Starec

  12. #32
    Débutant
    Inscrit en
    Décembre 2007
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 1 235
    Points : 269
    Points
    269
    Par défaut
    OK sa marche merci. Dans tou mon code de tout mes formulaires, il faut que je remette se type de syntaxe pour les DIM ... as String, ... as String....

    Paske en fait j'ai fait une GMAO sur ACCESS Donc j'ai énormément de formulaire, mais si c'est primordial je vais le faire.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [XL-2010] Problème de dépassement de capacité
    Par Tiviia dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 20/03/2013, 17h56
  2. Problème de dépassement de capacité
    Par nicolav dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/08/2009, 09h05
  3. [VBA-E] Problème de dépassement de capacité sous Excel
    Par Nicolas67 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/05/2006, 11h36
  4. Problème de dépassement de la capacité d'un TImage
    Par fred.mathiot dans le forum Composants VCL
    Réponses: 7
    Dernier message: 28/12/2005, 12h13
  5. détection de dépassement de capacité
    Par tut dans le forum C++
    Réponses: 10
    Dernier message: 01/12/2004, 23h11

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