Développement d'une plage de donnée

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

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

6classeur1.xlsm (16.81 Ko)

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".

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

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.

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

eric

4classeur1.xlsm (19.67 Ko)

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"?

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.

Rechercher des sujets similaires à "developpement plage donnee"