Code VBA access

Résolu/Fermé
SB - 24 févr. 2009 à 17:21
 SB - 25 févr. 2009 à 17:16
Bonjour,
Bonjour j'ai créer un code VBA pour exporter des champs de ma base de données access vers un ficheir texte sa marche bien y a pas de souci.
Seuelement je voudrais rajouter une ligne de code.
Voici le code que je voudrais rajouter : SI le code collaborateur = "" alors on ne l'exporte aps mais je ne sais pas comment on fait pour lui dire de ne pas exporte???

Voici mon code pour exporter :

Private Sub Commande30_Click()

Dim bd As Database
Dim rst As Recordset
Dim rs As Recordset
Dim ligne As String
Dim ligne1 As String

Set bd = OpenDatabase("SaisieSalariés.mdb")
Set rst = bd.OpenRecordset("Salariés")
Set rs = bd.OpenRecordset("liste des agences")

If Not (rst.EOF And rst.BOF) Then

Open "\\samba\commun\MajReg\envoimaj\TableSalaries.txt" For Binary As #1
rst.MoveFirst
Do While Not rst.EOF
ligne = rst("Code collaborateur") & ";" & rst("No salarie") & ";" & rst("Nom") & ";" & rst("Prénom") & ";" & rst("Fonction") & ";" & rst("Fonction 2") & ";" & rst("Nom Société") & ";" & rst("Site") & ";" & rst("Service/secteur") & ";" & rst("Tél Prof") & ";" & rst("Tel Fax") & ";" & rst("No Port")
Call EcritLigne(1, ligne)
rst.MoveNext
Loop
Close #1
Else
'pas d'enregistrements
End If

Merci a ceux qui pourront m'aider a rajouter le petit bout de code.
A voir également:

4 réponses

Utilisateur anonyme
24 févr. 2009 à 20:48
Bonjour,

Suggestion :

Private Sub Commande30_Click()

    Dim bd As Database
    Dim rst As Recordset
    Dim rs As Recordset
    Dim ligne As String
    Dim ligne1 As String

    Set bd = OpenDatabase("SaisieSalariés.mdb")
    Set rst = bd.OpenRecordset("Salariés")
    Set rs = bd.OpenRecordset("liste des agences")

    If Not (rst.EOF And rst.BOF) Then
        Open "\\samba\commun\MajReg\envoimaj\TableSalaries.txt" For Binary As #1
        rst.MoveLast
        rst.MoveFirst

        Do While Not rst.EOF
            If (rst("Code collabotateur") <> "") Then
                ligne = rst("Code collaborateur") & ";" & rst("No salarie") & ";" & rst("Nom") & ";" & rst("Prénom") & ";" & rst("Fonction") & ";" & rst("Fonction 2") & ";" & rst("Nom Société") & ";" & rst("Site") & ";" & rst("Service/secteur") & ";" & rst("Tél Prof") & ";" & rst("Tel Fax") & ";" & rst("No Port")
                Call EcritLigne(1, ligne)
            End If
            rst.MoveNext
        Loop
        Close #1
    Else
        'pas d'enregistrements
    End If

End Sub
'

Lupin
1
Merci lupin mais ça ne marche pas, le client dont le code collaborateur est vide s'exporte tjs dans le fichier texte...
En meme temps, je ne vois pas quelle commande tu as rajouté dans le code pour que sa ne s'exporte pas?
Tu fais le "If" mais aprés y'a pas la commande permettant de ne pas l'exporter!
Merci Lupin
0
Ok j'avais pas vu le "<>"!
J'ai donc intégré le "If" dans mon code mais les salariés dont le code collaborateur est vide s'affichent tjs dans le fichier texte...
Merci d'avance
0
Utilisateur anonyme
25 févr. 2009 à 17:09
re:
en fait je ne sais pas vraiment ce qui se passe. Il faudra effectuer
un déboggage en mode pas à pas ou ajouter du code !

il serait possible que la valeur de [ rst("Code collaborateur") ] soit
différente [ <> ] de rien [ "" ] genre un espace [ " " ] ?

quoi qu'il en soit trace avec du contrôle et/ou du code plus explicit,
comme :

Dim Longueur As Long
dim Chaine As String

        Do While Not rst.EOF
            Chaine = Trim(rst("Code collaborateur").Value)
            Longueur = Len(Chaine)
            If (Longueur > 0) Then
                ligne = rst("Code collaborateur") & ";" & _
                                rst("No salarie") & ";" & _
                                rst("Nom") & ";" & _
                                rst("Prénom") & ";" & _
                                rst("Fonction") & ";" & _
                                rst("Fonction 2") & ";" & _
                                rst("Nom Société") & ";" & _
                                rst("Site") & ";" & _
                                rst("Service/secteur") & ";" & _
                                rst("Tél Prof") & ";" & _
                                rst("Tel Fax") & ";" & _
                                rst("No Port")
                Call EcritLigne(1, ligne)
            End If
            rst.MoveNext
        Loop


Lupin
0
Merci sa marche!
tavé juste zapé un petit "end if"
Merci bcppp...
0