Regrouper et concaténer dans le même champ
Résolu
mahrezs
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
mahrezs Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
mahrezs Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Regrouper et concaténer dans le même champ
- Concatener deux cellules excel - Guide
- Comment regrouper des applications sur android - Accueil - Guide Android
- Comment regrouper des pdf - Guide
- Regrouper plusieurs feuilles excel en une seule - Guide
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
Je pense que ton code VBA est capable de faire cela sur base d'une requête aussi bien que sur base d'une table.
Il suffit donc de commencer par faire une requête qui rassemble ce dont tu as besoin, puis une seconde requête du même style que celle que tu nous montres, qui utilises la première requête comme source.
Je pense que ton code VBA est capable de faire cela sur base d'une requête aussi bien que sur base d'une table.
Il suffit donc de commencer par faire une requête qui rassemble ce dont tu as besoin, puis une seconde requête du même style que celle que tu nous montres, qui utilises la première requête comme source.
Bonjour,
Je vous remercie pour votre aide, oui ça fonctionne bien avec une requête.
Hélas, j’ai toujours un souci, ça ne marche pas quand le champ regroupé est une clé primaire. J’espère trouver une solution chez vous, comme toujours.
J’ai réalisé un p’tit exemple :
https://drive.google.com/file/d/1_w1N1reWv5M5s1Hr6llZdtjAPTc2DDOq/view?usp=sharing
Y’a deux requêtes dans l’exemple :
1° : R_Cancaténer , elle fonctionne bien avec de simples champs ;
2° : R_Cancaténer_ID , elle fonctionne pas quand le champ regroupé est une clé primaire.
Merci bien.
Je vous remercie pour votre aide, oui ça fonctionne bien avec une requête.
Hélas, j’ai toujours un souci, ça ne marche pas quand le champ regroupé est une clé primaire. J’espère trouver une solution chez vous, comme toujours.
J’ai réalisé un p’tit exemple :
https://drive.google.com/file/d/1_w1N1reWv5M5s1Hr6llZdtjAPTc2DDOq/view?usp=sharing
Y’a deux requêtes dans l’exemple :
1° : R_Cancaténer , elle fonctionne bien avec de simples champs ;
2° : R_Cancaténer_ID , elle fonctionne pas quand le champ regroupé est une clé primaire.
Merci bien.
Une façon de corriger cela, c'est de créer une seconde fonction, similaire, pour les cas où le type du champ est numérique, et d'appeler cette fonction quand nécessaire:
Au lieu d'utiliser deux fonctions presque identiques, il serait peut-être préférable d'ajouter un paramètre à la fonction, pour préciser si le champ est numérique ou pas. J'ai fait au plus simple et au plus rapide, pour que tu puisses confirmer que cela fonctionne.
Function ConcatForQuerynum(strRegroup As String, fldRegroup As String, _ strConcat As String, strTable As String, _ Optional strSep As String = "/") As String '** Regroupement de donnée sur le champ fldRegroup '** et concaténation sur le champ strConcat Dim db As Database Dim rst As Recordset Dim strResult As String Dim strRst As String Set db = CurrentDb() strRst = "Select * From [" & strTable & "] " _ & "Where [" & strRegroup & "] = " & fldRegroup & ";" Set rst = db.OpenRecordset(strRst, dbOpenDynaset) With rst If Not .BOF Then .MoveFirst Do Until .EOF If strResult = "" Then strResult = .Fields(strConcat) Else strResult = strResult & strSep & .Fields(strConcat) End If .MoveNext Loop End If End With rst.Close: Set rst = Nothing db.Close: Set db = Nothing ConcatForQuerynum = strResult End Function
Au lieu d'utiliser deux fonctions presque identiques, il serait peut-être préférable d'ajouter un paramètre à la fonction, pour préciser si le champ est numérique ou pas. J'ai fait au plus simple et au plus rapide, pour que tu puisses confirmer que cela fonctionne.