Développement d'une plage de donnée Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
M
Martin1972
Nouveau venu
Nouveau venu
Messages : 8
Inscrit le : 9 mars 2016
Version d'Excel : 2013

Message par Martin1972 » 25 mars 2019, 22:30

Bonjour,
je recherche une macro pour développer une plage de donnée d'une cellule afin de retrouver toute les références et de les exploiter correctement.
Par ex, données d'une cellule "A1,A3,A7-A12,A14" devient "A1,A3,A7,A8,A9,A10,A11,A12,A14"
Ces données pourront être exploitable ensuite avec la fonction "Convertir" et séparateur "virgule".
D'ailleurs, est-il possible d'utiliser cette fonction avec un séparateur "saut de ligne"?
Merci pour votre aide
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 8'930
Appréciations reçues : 328
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 26 mars 2019, 00:36

Bonjour,

une fonction personnalisée :
Function complete(s As String, Optional sep As String = ",") As String
    Dim tmp1, tmp2, i As Long, j As Long, n As Long
    Dim pl As Range, c As Range
    tmp1 = Split(Replace(s, "-", ":"), ",")
    For i = 0 To UBound(tmp1)
        If pl Is Nothing Then Set pl = Range(tmp1(i)) Else Set pl = Union(pl, Range(tmp1(i)))
    Next i
    For Each c In pl
        complete = complete & sep & c.Address(0, 0)
    Next c
    complete = Mid(complete, 2)
End Function
Par défaut le séparateur est la "," :
=complete(A2) => "A1,A3,A7,A8,A9,A10,A11,A12,A14"
mais tu peux mettre un 2nd paramètre optionnel pour le séparateur de ton choix :
=complete(A3;CAR(10)) =>
"A1
A3
A7
A8
A9
A10
A11
A12
A14"
dans une cellule avec en format 'Renvoyer à la ligne automatiquement'

On peut faire aussi une fonction personnalisée matricielle pour répartir dans plusieurs cellules.
Mais ça t'obligera à sélectionner le nombres de cellules nécessaire pour recevoir le résultat, avant de saisir ta formule à valider avec Shift+Ctrl+Entrée.
Tu dis...
eric
Classeur1.xlsm
(16.81 Kio) Téléchargé 3 fois
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
M
Martin1972
Nouveau venu
Nouveau venu
Messages : 8
Inscrit le : 9 mars 2016
Version d'Excel : 2013

Message par Martin1972 » 26 mars 2019, 09:58

Merci pour ta réponse, la fonction remplit vraiment bien son rôle. J'ai rajouté une colonne de vérif de quantité de données au cas ou.
Concernant le saut de ligne, c'était surtout pour savoir s'il était possible de l'utiliser comme séparateur avec la fonction "convertir".
j
jmd
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'659
Appréciations reçues : 249
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 26 mars 2019, 10:16

bonjour

salut eriiic au passage

ne serait-il pas possible de "mettre en Liste" de manière à ce que les formules se propagent automatiquement ?

amitiés à tous
Apprenez les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données".
Apprendre les fonctionnalités "récentes".
M
Martin1972
Nouveau venu
Nouveau venu
Messages : 8
Inscrit le : 9 mars 2016
Version d'Excel : 2013

Message par Martin1972 » 26 mars 2019, 10:40

En étirant la formule, ça développe tout. Je viens de le faire sur une 100aine de ligne, la formule "=complete(A2)" s'incrémente automatiquement.
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 8'930
Appréciations reçues : 328
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 26 mars 2019, 10:48

Bonjour,
salut jmd,
Concernant le saut de ligne, c'était surtout pour savoir s'il était possible de l'utiliser comme séparateur avec la fonction "convertir".
De quel saut de ligne parles-tu ?
S'il s'agit de retours à la ligne à l'intérieur d'une cellule c'est non.

Mais j'ai l'impresssion que tu ne nous dis pas tout.
Ton point de départ réel c'est vraiment une chaine de ce type "A1,A3,A7-A12,A14" ou c'est juste une étape de ta résolution du pb ?
Et le but final c'est quoi ?

Un exemple de fonction personnalisée matricielle qui répartit le résultat en colonnes ou en lignes :
2019-03-26_10-47-35.png
2019-03-26_10-47-35.png (29.12 Kio) Vu 59 fois
eric
Classeur1.xlsm
(19.67 Kio) Téléchargé 2 fois
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
M
Martin1972
Nouveau venu
Nouveau venu
Messages : 8
Inscrit le : 9 mars 2016
Version d'Excel : 2013

Message par Martin1972 » 26 mars 2019, 11:48

Désolé, cette demande correspondait a une autre question sur la fonction "Convertir" en général.
Est-il possible d'utiliser cette fonction avec un séparateur "saut de ligne"?
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 8'930
Appréciations reçues : 328
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 26 mars 2019, 11:59

par eriiic » 26 mars 2019, 10:48
De quel saut de ligne parles-tu ?
S'il s'agit de retours à la ligne à l'intérieur d'une cellule c'est non.
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message