Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/08/2011, 15h39   #1
Invité de passage
 
Homme
Webmaster
Inscription : août 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Communication - Médias

Informations forums :
Inscription : août 2011
Messages : 9
Points : 0
Points : 0
Par défaut Concatener des cellules dans le but d'exporter les données

Bonjour,

Je souhaiterais concaténer les cellules d'une table access afin d'exporter celles ci dans une fichier .csv
Je m'explique: Le résultat de cette concaténation va permette d'établir une clé commune qui sera utilisée dans plusieurs autres application.

A/ Un formulaire est remplie afin de formater l'information
B/ Une macro/requête ou autre, est exécutée pour concaténer ces cellules et sortir une clé primaire, et l'exporter en .csv

J'ai donc ma table avec les champs, A,B,C et D.
Je souhaiterai concaténer ceux ci de manière à ce qu'ils sortent en minuscule, sans espace, avec un underscore comme séparation, tel que:
a_b_c_d

Seuls les champs pleins doivent être formaté de telle sorte que s'il en manque un, cela donne par exemple : a_c_d ou a_d, mais jamais d'underscore à la fin ou de doublé.

L'ensemble de chaque ligne est ensuite enregistré en .csv dans un dossier, avec pour nom la date_le numéro de clé primaire auto (c'est le premier champ de la table).csv

Info subsidiaire: Est il possible qu'une fois la macro exécuté, les infos saisie dans le formulaire ne soit plus visible. C'est à dire que le formulaire est vierge à chaque ouverture. Les données ne sont accessible que via la table.

Je vous remercie d'avoir pris le temps de lire ce message, et vous remercie par avance pour votre aide.
louaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 17h02   #2
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
Par défaut concaténation

Pour concatner des rubriques dans un requête tu peux employer la méthode suivante. Supposons une table qui comprte 2 rubrques : NOM et PRENOM

Pour faire une requête qui te donnerait par exemple

NOM------ PRENOM -------- IDENTITE COMPLETE

Tu pourrais par exemple (sous l'éditeur de requête) mettre la rubrique NOM dans la première colonne, la rubrique PRENOM dans la deuxième colonne et enfin mettre : NOM & " " & PRENOM dans la troisième colonne

Tu obtiendrais :
NOM------ PRENOM -------- IDENTITE COMPLETE
Dupont----Alain------------ Dupont Alain

Et si tu veux un Underscore entre NOM et PRENOM tu le mets entre les deux guillemets.

Il ne te resterait qu'à exporter la dite requête

Michel
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 18h21   #3
Membre actif
 
Homme Dominique
Gestion parc machine, assistance informatique, développement Access, Excel...
Inscription : février 2007
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 56
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Gestion parc machine, assistance informatique, développement Access, Excel...
Secteur : Service public

Informations forums :
Inscription : février 2007
Messages : 130
Points : 161
Points : 161
Bonsoir.
Pour ma part, je traiterai le résultat d'une requête, éventuellement paramétrée par code, par appel à une fonction comme ceci
Code :
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
Public Function Estvide(ByVal vntTxt As Variant)
'Cette fonction vérifie que le texte passé en paramètre est vide
'Elle retourne vrai si le texte est pas vide
 
  Estvide = False
 
  If IsNull(vntTxt) Then
    Estvide = True
  Else
    If IsEmpty(vntTxt) Then
      Estvide = True
    Else
      If vntTxt = "" Then
        Estvide = True
      Else
        If Len(Trim(vntTxt)) = 0 Then
          Estvide = True
        End If
      End If
    End If
  End If
End Function
 
Public Function Concatener(ByVal strA As String, ByVal StrB As String, ByVal strC As String, ByVal strD As String) As String
'Cette fonction concatène les données non vides en insérant le caractère "_" entre chaque donnée
 
  Dim strResult As String
 
  strResult = ""
 
  If Not Estvide(strA) Then strResult = strA
 
  If Not Estvide(StrB) Then
    If Not Estvide(strResult) Then strResult = strResult & "_" & StrB
  End If
 
  If Not Estvide(strC) Then
    If Not Estvide(strResult) Then strResult = strResult & "_" & strC
  End If
 
  If Not Estvide(strD) Then
    If Not Estvide(strResult) Then strResult = strResult & "_" & strD
  End If
 
  Concatener = strResult
 
End Function
 
 
Public Sub ExtractData()
'Cette procédure recherche les donner à concaténer
 
  Dim oMyDtb As Database    'Base de données de travail
  Dim oRst As Recordset     'Résultat de la requête "reqSelection"
  Dim strSql As String
  Dim strLgn As String
 
  'Initialisations
  Set oMyDtb = CurrentDb
 
  'Eventuellement monter et actualiser la requête
  strSql = "SELECT tblMaTable.Champ1, tblTable.Champ2, tblTable.Champ3, tblTable.Champ4 " & _
           "From tblMaTable " & _
           "WHERE tblMaTable.Condition=Condition;"
  oMyDtb.QueryDefs![reqSelection].SQL = strSql
 
  'Exécuter la requête
  Set oRst = oMyDtb.OpenRecordset("reqSelection")
 
  'Si la requête retourne un résultat
  While Not (oRst.EOF)
    strLgn = Concatener(oRst.Fields(0), oRst.Fields(1), oRst.Fields(2), oRst.Fields(3))
    'Traiter la sauvegarde dans un tableau de string ou une table temporaire qui sera exportée dand un .csv
  Wend
 
  Set oRst = Nothing
  Set oMyDtb = Nothing
 
End Sub
Cordialement, Dominique
PapouDomi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2011, 18h30   #4
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
Oui, c'est une autre manière de faire...

Mais ne penses-tu pas que c'est tout de même beaucoup de code pour quelque chose de relativement simple à traiter dans la requête elle-même ?

Cordialement
Michel
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 09h50   #5
Invité de passage
 
Homme
Webmaster
Inscription : août 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Communication - Médias

Informations forums :
Inscription : août 2011
Messages : 9
Points : 0
Points : 0
Merci pour vos réponses,
je vais regarder ça et vous tiens au courant.
louaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 10h20   #6
Invité de passage
 
Homme
Webmaster
Inscription : août 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Communication - Médias

Informations forums :
Inscription : août 2011
Messages : 9
Points : 0
Points : 0
Le problème qui se pose dans cette requête est qu'elle ne prends pas en compte les règles de formatage. Si un champ est vide, elle va tout de même allé afficher l'underscore. On obtient ainsi des doublé, et des underscore en fin.

A moins de faire un code qui aille supprimer les double underscore, et les _ seulement s'il sont en dernier caractère.

Citation:
Envoyé par Orion34080 Voir le message
Pour concatner des rubriques dans un requête tu peux employer la méthode suivante. Supposons une table qui comprte 2 rubrques : NOM et PRENOM

Pour faire une requête qui te donnerait par exemple.

NOM------ PRENOM -------- IDENTITE COMPLETE

Tu pourrais par exemple (sous l'éditeur de requête) mettre la rubrique NOM dans la première colonne, la rubrique PRENOM dans la deuxième colonne et enfin mettre : NOM & " " & PRENOM dans la troisième colonne

Tu obtiendrais :
NOM------ PRENOM -------- IDENTITE COMPLETE
Dupont----Alain------------ Dupont Alain

Et si tu veux un Underscore entre NOM et PRENOM tu le mets entre les deux guillemets.

Il ne te resterait qu'à exporter la dite requête

Michel
louaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 10h24   #7
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
Par défaut formatage

Suffit sans doute d'intégrer un "IIF" (sous ACCESS un "VraiFaux") dans la rubrique concaténée... permetttant de tester et de donner un résultat correct, avec ou sans l'underscore.

Dans le style :
Code :
Identité : Nom & iif(PRENOM="";"";"_" & PRENOM)
--> J'ai pas testé !



Mais l'essentiel est d'arriver au but... et sur ce point toutes les méthodes sont acceptables, si elles atteignent ce but.


Amicalement
Michel
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 10h43   #8
Invité de passage
 
Homme
Webmaster
Inscription : août 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Communication - Médias

Informations forums :
Inscription : août 2011
Messages : 9
Points : 0
Points : 0
Quels données doit-je remplacer dans tout cela ?

J'ai changé toute cette partie:
Citation:
'Eventuellement monter et actualiser la requête
strSql = "SELECT tblMaTable.Champ1, tblTable.Champ2, tblTable.Champ3, tblTable.Champ4 " & _
"From tblMaTable " & _
"WHERE tblMaTable.Condition=Condition;"
Mais le débogeur me renvoit une erreur ici:
oMyDtb.QueryDefs![reqSelection].SQL = strSql

Peux tu me préciser les éléments à adapter? Comme tu l'as surement remarqué, je suis novice en à la matière.

Merci



Citation:
Envoyé par PapouDomi Voir le message
Bonsoir.
Pour ma part, je traiterai le résultat d'une requête, éventuellement paramétrée par code, par appel à une fonction comme ceci
Code :
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
Public Function Estvide(ByVal vntTxt As Variant)
'Cette fonction vérifie que le texte passé en paramètre est vide
'Elle retourne vrai si le texte est pas vide
 
  Estvide = False
 
  If IsNull(vntTxt) Then
    Estvide = True
  Else
    If IsEmpty(vntTxt) Then
      Estvide = True
    Else
      If vntTxt = "" Then
        Estvide = True
      Else
        If Len(Trim(vntTxt)) = 0 Then
          Estvide = True
        End If
      End If
    End If
  End If
End Function
 
Public Function Concatener(ByVal strA As String, ByVal StrB As String, ByVal strC As String, ByVal strD As String) As String
'Cette fonction concatène les données non vides en insérant le caractère "_" entre chaque donnée
 
  Dim strResult As String
 
  strResult = ""
 
  If Not Estvide(strA) Then strResult = strA
 
  If Not Estvide(StrB) Then
    If Not Estvide(strResult) Then strResult = strResult & "_" & StrB
  End If
 
  If Not Estvide(strC) Then
    If Not Estvide(strResult) Then strResult = strResult & "_" & strC
  End If
 
  If Not Estvide(strD) Then
    If Not Estvide(strResult) Then strResult = strResult & "_" & strD
  End If
 
  Concatener = strResult
 
End Function
 
 
Public Sub ExtractData()
'Cette procédure recherche les donner à concaténer
 
  Dim oMyDtb As Database    'Base de données de travail
  Dim oRst As Recordset     'Résultat de la requête "reqSelection"
  Dim strSql As String
  Dim strLgn As String
 
  'Initialisations
  Set oMyDtb = CurrentDb
 
  'Eventuellement monter et actualiser la requête
  strSql = "SELECT tblMaTable.Champ1, tblTable.Champ2, tblTable.Champ3, tblTable.Champ4 " & _
           "From tblMaTable " & _
           "WHERE tblMaTable.Condition=Condition;"
  oMyDtb.QueryDefs![reqSelection].SQL = strSql
 
  'Exécuter la requête
  Set oRst = oMyDtb.OpenRecordset("reqSelection")
 
  'Si la requête retourne un résultat
  While Not (oRst.EOF)
    strLgn = Concatener(oRst.Fields(0), oRst.Fields(1), oRst.Fields(2), oRst.Fields(3))
    'Traiter la sauvegarde dans un tableau de string ou une table temporaire qui sera exportée dand un .csv
  Wend
 
  Set oRst = Nothing
  Set oMyDtb = Nothing
 
End Sub
Cordialement, Dominique
louaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 10h43   #9
Membre actif
 
Homme Dominique
Gestion parc machine, assistance informatique, développement Access, Excel...
Inscription : février 2007
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 56
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Gestion parc machine, assistance informatique, développement Access, Excel...
Secteur : Service public

Informations forums :
Inscription : février 2007
Messages : 130
Points : 161
Points : 161
Bonjour.
Orion34080 =>J'avais vu le problème de l'underscore avec l'extration par requête simple et comme je ne suis pas trop adepte de requêtes avancées car pas très spécialiste, j'utilise souvent ma réserve de fonctions toutes prêtes que j'adapte au cas par cas.
Ta dernière suggestion peut-elle traiter le cas où le 1er champ est inexistant?

Louaf=>As-tu créé et enregistré la requête reqSelection?
As-tu testé le contenu de la variable strSql dans une requête?
Eventuellement, indique le code de ta requête.

Cordialement, Dominique
PapouDomi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 11h01   #10
Invité de passage
 
Homme
Webmaster
Inscription : août 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Communication - Médias

Informations forums :
Inscription : août 2011
Messages : 9
Points : 0
Points : 0
La requête a été enregistrée et affiche simplement les champs à prendre en compte.
Oui, j'ai fait ce test, mais cela n'a pas fonctionné. J'ai pensé que ceci n'était valable que dans un module...

Mais peut être que je n'ai pas la bonne méthode. Est ce bien dans un module (qui est ensuite appelé par un bouton dans un form) que le code doit être entré?


Citation:
Envoyé par PapouDomi Voir le message
Louaf=>As-tu créé et enregistré la requête reqSelection?
As-tu testé le contenu de la variable strSql dans une requête?
Eventuellement, indique le code de ta requête.

Cordialement, Dominique
louaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 11h25   #11
Invité de passage
 
Homme
Webmaster
Inscription : août 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Communication - Médias

Informations forums :
Inscription : août 2011
Messages : 9
Points : 0
Points : 0
J'ai testé dans une requête:

SELECT iif(reqconca.Référence="";"";reqconca.Référence) & iif(reqconca.Couleur="";"";"_" & reqconca.Couleur) & iif(reqconca.Taille="";"";"_" & reqconca.Taille)
FROM reqconca;

Mais il y a une erreur de syntaxe...



Citation:
Envoyé par Orion34080 Voir le message
Suffit sans doute d'intégrer un "IIF" (sous ACCESS un "VraiFaux") dans la rubrique concaténée... permetttant de tester et de donner un résultat correct, avec ou sans l'underscore.

Dans le style :
Code :
Identité : Nom & iif(PRENOM="";"";"_" & PRENOM)
--> J'ai pas testé !



Mais l'essentiel est d'arriver au but... et sur ce point toutes les méthodes sont acceptables, si elles atteignent ce but.


Amicalement
Michel
louaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 11h37   #12
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
Par défaut Premier champ inexistant

===>PAPOUDOMI
Citation:
Ta dernière suggestion peut-elle traiter le cas où le 1er champ est inexistant?
Non, en l'état, elle ne le peut pas.
Faudrait en faire un peu plus ... par exemple :

Code :
Identité : VraiFaux([NOM]="" Ou EstNull([NOM]);VraiFaux([PRENOM]="" Ou EstNull([PRENOM]);"";[PRENOM]);VraiFaux([PRENOM]="" Ou EstNull([PRENOM]);[NOM];[NOM] & "_" & [PRENOM]))
ou

Code :
Identité: VraiFaux([NOM]="" Ou EstNull([NOM]);"";[NOM]) & VraiFaux([PRENOM]="" Ou EstNull([PRENOM]);"";VraiFaux([NOM]="" Ou EstNull([NOM]);[PRENOM];"_" & [PRENOM]))

Je viens de le tester et cela couvre les cas suivants :

NOM OK et PRENOM OK --> Dupont_Louis
NOM KO et PRENOM KO -->
NOM OK et PRENOM KO --> Dupont
NOM KO et PRENOM OK --> Louis

Amicalement
Michel
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 15h44   #13
Invité de passage
 
Homme
Webmaster
Inscription : août 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Communication - Médias

Informations forums :
Inscription : août 2011
Messages : 9
Points : 0
Points : 0
Dominique,

Pourrais tu me préciser, ce que je dois à faire, et ce que je dois changer par rapport à ton code?
J'ai bien créé reqSelection, mais peut être l'ai je mal fait...

Pareil, pour le contenu de strSql, où dois l'intégrer?

J'ai tenté avec la méthode d'Orion, mais je me perds dans les iff.

Pourrais tu encore m'aider?

Merci

Citation:
Louaf=>As-tu créé et enregistré la requête reqSelection?
As-tu testé le contenu de la variable strSql dans une requête?
Eventuellement, indique le code de ta requête.

Cordialement, Dominique
louaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 16h17   #14
Membre actif
 
Homme Dominique
Gestion parc machine, assistance informatique, développement Access, Excel...
Inscription : février 2007
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 56
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Gestion parc machine, assistance informatique, développement Access, Excel...
Secteur : Service public

Informations forums :
Inscription : février 2007
Messages : 130
Points : 161
Points : 161
Ci-joint un exemple concret qui, je l'espère t'éclairera, contenant une table avec quatre champs à concaténer, la requête sélection et un formulaire de test avec un bouton pour appeler le code.
N'hésite pas à me contacter pour de plus amples explications.
Au besoin, fait moi passer ta base en précisant si tu doit créer un fichier csv par enregistrement ou pour une série d'enregistrement et selon quels critères.
Je n'ai pas tout compris mais tes données ne sont-elles pas saisies dans un formulaire, alors ne serait-il pas aussi simple de faire la concaténation directement dans ce formulaire?
Cordialement, Dominique
Fichiers attachés
Type de fichier : zip BDD1.zip (21,4 Ko, 4 affichages)
PapouDomi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 17h09   #15
Invité de passage
 
Homme
Webmaster
Inscription : août 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Communication - Médias

Informations forums :
Inscription : août 2011
Messages : 9
Points : 0
Points : 0
Dominique,

En pièce jointe, la base que tu m'as fait passé avec le type d'info dont j'ai besoin. Je te remercie vraiment pour ton aide.
Les personnes qui vont entrer ces données doivent en faire le minimum.
Il entre quatre informations par ligne (marque,ref, couleur, taille) dans un formulaire, et quand toutes les lignes sont faites cliquent sur un bouton qui va :
concatener 3 informations(tous sauf marque), formater (minuscule, pas d'espace, et underscore entre cellule), et permettre d'enregistrer le résultat dans un fichier csv.
De mon côté, je peux accéder à ces info dans une table où j'ai du coup:
numéro (clé primaire), marque, réf,couleur, taille, et le résultat de l'action précédente.

Qu'en penses tu?

Merci encore pour l'aide

Citation:
Envoyé par PapouDomi Voir le message
N'hésite pas à me contacter pour de plus amples explications.
Au besoin, fait moi passer ta base en précisant si tu doit créer un fichier csv par enregistrement ou pour une série d'enregistrement et selon quels critères.
Je n'ai pas tout compris mais tes données ne sont-elles pas saisies dans un formulaire, alors ne serait-il pas aussi simple de faire la concaténation directement dans ce formulaire?
Cordialement, Dominique
Fichiers attachés
Type de fichier : zip BDD1bis.zip (38,9 Ko, 2 affichages)
louaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 17h15   #16
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
Par défaut Petit Programme

Tu peux aussi essayer ce petit code en le copiant/collant dans un de tes modules et en l'exécutant (après bien sûr avoir crée une table (Table1) contenant au moins les 4 champs A,B,C,D)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Test()
    Set rs = New ADODB.Recordset
    strsql = "SELECT [A],[B],[C],[D] FROM Table1"
    rs.Open strsql, CurrentProject.Connection
    If Not rs.EOF Then
        With rs
            Do While Not .EOF
                texte = ![A] & "_" & ![B] & "_" & ![C] & "_" & ![D]
                Do While Left(texte, 1) = "_"
                    texte = Mid(texte, 2)
                Loop
                Do While Right(texte, 1) = "_"
                    texte = Left(texte, Len(texte) - 1)
                Loop
                MsgBox (texte)
                .MoveNext
            Loop
        End With
        rs.Close
    End If
Michel
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 17h22   #17
Invité de passage
 
Homme
Webmaster
Inscription : août 2011
Messages : 9
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Webmaster
Secteur : Communication - Médias

Informations forums :
Inscription : août 2011
Messages : 9
Points : 0
Points : 0
Citation:
Envoyé par Orion34080 Voir le message
Tu peux aussi essayer ce petit code en le copiant/collant dans un de tes modules et en l'exécutant (après bien sûr avoir crée une table (Table1) contenant au moins les 4 champs A,B,C,D)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub Test()
    Set rs = New ADODB.Recordset
    strsql = "SELECT [A],[B],[C],[D] FROM Table1"
    rs.Open strsql, CurrentProject.Connection
    If Not rs.EOF Then
        With rs
            Do While Not .EOF
                texte = ![A] & "_" & ![B] & "_" & ![C] & "_" & ![D]
                Do While Left(texte, 1) = "_"
                    texte = Mid(texte, 2)
                Loop
                Do While Right(texte, 1) = "_"
                    texte = Left(texte, Len(texte) - 1)
                Loop
                MsgBox (texte)
                .MoveNext
            Loop
        End With
        rs.Close
    End If
Michel
Merci Michel,

J'ai adapté cela, mais le débogeur prompte sur New ADODB.Recordset en me disant : Type défini par l’utilisateur non défini

Ca te parle?
louaf est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 17h26   #18
Membre éclairé
 
Homme Michel
Développeur informatique
Inscription : février 2008
Messages : 261
Détails du profil
Informations personnelles :
Nom : Homme Michel
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : février 2008
Messages : 261
Points : 304
Points : 304
Par défaut Référence

il doit te manquer une référence style :
Microsoft ActiveX Data Objects 2.X Library

si c'est bien le cas,
Tu ouvres un module (n'importe lequel), tu vas dans "Outils / Référence" et tu coches la référence manquante.

Michel
Orion34080 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/08/2011, 22h40   #19
Membre actif
 
Homme Dominique
Gestion parc machine, assistance informatique, développement Access, Excel...
Inscription : février 2007
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 56
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Gestion parc machine, assistance informatique, développement Access, Excel...
Secteur : Service public

Informations forums :
Inscription : février 2007
Messages : 130
Points : 161
Points : 161
Bonsoir.
Je vais essayer de résumer tes besoins:
-Saisir et enregistrer les caractéristiques de chaque produit + la concaténation des champs décrivant ce produit dans la table SkuGen
-Envoyer dans un fichier csv le champ concaténation de tous les enregistrements de la table SkuGen lors d'un clic sur le bouton Envoyer de ton formulaire.
Pour cela, j"effectuerai directement la concaténation lors de la saisie.
Ci-joint une base qui exécute ce 1er point. Je te laisse le soin de rajouter dans chaque évènement "AfterUpdate" le formatage en majuscules, suppression des espaces... des données saisies.
Si cela te convient, je te passerai le code d'exportation. J'ai dans un coin la procédure qui exporte des données dans un fichier xlsx que l'on pourra adapter.
Bonne nuit, Dominique
Fichiers attachés
Type de fichier : zip BDD2.zip (28,8 Ko, 9 affichages)
PapouDomi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h25.


 
 
 
 
Partenaires

Hébergement Web