Extraction indexée - consolidation
Bonjour tous,
Décidé à me lancer ce week end sur ce sujet extraction indexée, je joins un fichier avec la mise en forme de ce que je souhaite réaliser avec excel 2010. J'utilise cette méthode car mes phrases sont un peu confuses en ce moment.
Pourriez-vous déjà me dire si ce que je souhaite faire (dans ma tête
Pour l'instant je travaille sur 1 seul fichier, mais à terme il y aura 2 fichiers sources (phrases, textes) différents
Merci de votre regard et des orientations que je pourrais prendre.
Bonjour à tous,
Voici ma première avancée et déjà premier bug. Je perds une colonne.
A partir d'une class & collection trouvée j'ai adapté mes colonnes. Mais je crains que la colonne "clé" doit être la première comme sur les captures d'écran. -
Or dans la structure de mon fichier Matrice, la colonne clé est la 3ème. Au final je récupère mes données décomposées selon la clé mais sans la première colonne.
Est-ce une limitation du code ou une astuce d'indice ?
Bonjour à tous,
sur la feuille 1, en cherchant une solution alternative au post précédent, je décompose la colonne clé avec les séparateurs ",". Mais je n'arrive pas à supprimer la virgule en colonne 4 et m'oblige à mettre une virgule dans la colonne 3 ex: CC, A, alors qu'il n'y a une virgule que si le contenu est CC, A, ES
Probablement un décalage mais où ?
J'aurai le même décalage dans la fonction décomposition associée (feuille 1-fonction)
Function Décomposition(critère As String) As Variant ' dans les cellules C9:E9 =décomposition(C8) ctrl+maj+entrée
Dim critère2 As String
Dim critère1 As String
Dim critère3 As String
Dim Pos As Integer
Dim Pos2 As Integer
Dim Pos3 As Integer
Pos = InStr(1, critère, ",", vbTextCompare)
If Pos = 0 Then
Pos = Len(critère) + 1
End If
critère1 = Trim(Left(critère, Pos - 1))
Pos2 = InStr(1, critère1, " ", vbTextCompare)
If Pos2 Then
Pos3 = InStr(Pos2 + 1, critère1, " ", vbTextCompare)
If Pos3 Then
critère1 = Left(critère1, Pos3 - 1)
Else
critère1 = Left(critère1, Pos2 - 1)
End If
End If
Pos2 = InStr(Pos + 2, critère, " ", vbTextCompare)
If Pos2 = 0 Then
Pos2 = Len(critère)
End If
If Pos2 > Pos Then
critère2 = Mid(critère, Pos + 1, Pos2 - Pos)
critère3 = Right(critère, Len(critère) - Pos2)
End If
Pos = InStr(1, critère1, "-", vbTextCompare)
If Pos Then
critère1 = Trim(StrConv(Left(critère1, Pos), vbProperCase)) & _
Trim(StrConv(Right(critère1, Len(critère1) - Pos), vbProperCase))
Else
critère1 = Trim(StrConv(critère1, vbProperCase))
End If
critère2 = Trim(StrConv(critère2, vbProperCase))
critère3 = Trim(StrConv(critère3, vbProperCase))
Décomposition = Array(critère1, critère2, critère3)
End Function
Bonjour,
Que cherchez-vous à faire en fait ? Pouvez-vous illustrer un peu ?
Edit : Vous connaissez la fonction split et la fonction replace ?
monarray = split("A-B-C", "-") renvoie un tableau de 3 valeurs {"A", "B", "C"}
chaine = replace("A,B,C", ",", "-") renvoie "A-B-C"
Cdlt,
Bonjour 3GB,
je découvre la fonction SPLIT, d'une efficacité remarquable et son icone dans la barre des tâches !! Merci. Je vérifierai que la fonction est dispo sur excel 2010.
concernant les objectifs, à partir d'un numéro trouvé dans la colonne N°doc, je dois pouvoir filtrer selon un critère de la colonne critère pour extraire les phrases de la colonne A. (d'où la première macro reformdata où il y a un problème avec la colonne A)
Puis copier ces résultats à la suite d'un autre filtre sur la feuille 2 qui sera fait sur la colonne typexx correspondant au N° de doc initial (d'où le besoin ? de créer une table index avec tous les numéros de doc extraits [N°doc/Typexx]
puis enregistrer le tout dans un nouvel onglet.
L'idée est d'arriver à ce type d'interface utilisateur
Je suis donc à l'écoute de tout conseil dans l'orientation et la structuration du code que je vais essayer de faire