VBA Récupération de chaine de caractere

Kloe

XLDnaute Nouveau
Bonjour à tous,
Je bosse actuellement sur VBA, je débute.
J'ai un fichier de plusieurs dizaines de colonnes et des milliers de lignes, et j'ai un fichier de ce type :

A | Journée | Nb.Jours | Freq
## | ###### | 2 | 1_____7
## | ###### | 3 | _23__6_

La colonne "Freq" indique quels jours de la semaine l'évènement A se produit. Cette colonne est toujours au même format : chaque chiffre correspond au jour de la semaine correspondant, et un "_" signifie que cet evenement ne se produit pas ce jour. Un évènement se produit toujours au moins une fois par semaine, donc la cellule "_______" n'existe pas dans mon tableau.
La colonne "NB.Jours" est une colonne pour laquelle j'ai créé une macro qui copie la ligne le nombre de jours auxquels l'évènement A se produit (en comptant le nombre de chiffres de la cellule Freq). Donc, s'il y a deux chiffres dans la cellule freq, alors cette ligne se copiera 2 fois.
Cependant, j'aimerais ajouter à ma macro une fonctionnalité : pour chaque ligne dupliquée, le jour correspondant serait également automatiquement renseigné.

Je m'explique : si on a une Freq qui est : 1____6_, alors on aura Nb.Jours qui vaudra 2, donc la ligne se dupliquera une fois (pour avoir deux lignes), et je veux que dans la premiere ligne, dans la case journée, il y ait "1" et dans la deuxieme, dans la case journée, il y ait"6".
Chaque ligne doit donc renvoyer la valeur d'un chiffre présent dans la colonne "Freq".
Cela doit s'appliquer a toutes les lignes de mon tableau (plus de 6000)

Pour résumer, j'aimerais obtenir ça :


j'ai déja fait le programme pour compter le nombre de jours, pour dupliquer en fonction du nombre de jours, mais il ne me reste plus qu'a remplir les jours.

Je suis débutant sur VBA donc je galère un petit peu, mais j'imagine que c'est faisable.

J'avais commencé un bout de code avec une double boucle for, mais j'ai à chaque fois une erreur différente, je ne pense pas que cela vous avance beaucoup.

Merci à tous pour votre aide !
 

Pièces jointes

  • upload_2018-9-25_14-4-12.png
    upload_2018-9-25_14-4-12.png
    9 KB · Affichages: 21

Dranreb

XLDnaute Barbatruc
Bonjour.
Joindre des image ne sert à rien: on ne peut pas travailler dessus.
Je sais que la charte présente ça comme une simple facilité qui ne donne pas envie, en tant que tel, de l'utiliser, et non comme ce qu'elle est en réalité, à savoir une obligation impérative, mais :
Personne n'aura envie, en vue de développer et tester quelque chose qui pourrait vous convenir, de créer un classeur en suivant vos indications. D'autant plus que vous, vous l'avez, et qu'il vous suffirait de le joindre par le bouton Téléverser un fichier.
 

Kloe

XLDnaute Nouveau
Bonjour.
Joindre des image ne sert à rien: on ne peut pas travailler dessus.
Je sais que la charte présente ça comme une simple facilité qui ne donne pas envie, en tant que tel, de l'utiliser, et non comme ce qu'elle est en réalité, à savoir une obligation impérative, mais :
Personne n'aura envie, en vue de développer et tester quelque chose qui pourrait vous convenir, de créer un classeur en suivant vos indications. D'autant plus que vous, vous l'avez, et qu'il vous suffirait de le joindre par le bouton Téléverser un fichier.

Merci pour ta réponse, mais je ne trouve pas ça spécialement utile de fournir un excel avec 4 colonnes et deux lignes...
Mon problème initiale est simple, sa résolution, un peu moins (du moins pour moi).
 

Kloe

XLDnaute Nouveau
Merci !
J'ai fait ceci pour l'instant :
VB:
   chaine = Replace(Cells(2, 18).Value, "_", "")
    nb_iteration = Cells(2, 17).Value
    i = 1
    While i <= nb_iteration
        Cells(i + 1, 8) = Mid(chaine, i, 1)
        i = i + 1
    Wend

Cela marche très bien, mais uniquement pour la premiere répétition, cela ne se produit pas jusqu'a la fin de mon tableau, saurie-vous pourquoi ?
 

Discussions similaires

Réponses
4
Affichages
193
Réponses
9
Affichages
154
Réponses
46
Affichages
845

Statistiques des forums

Discussions
312 182
Messages
2 086 002
Membres
103 084
dernier inscrit
Hervé30120