Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
    9 KB · Affichages: 22

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

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 ?
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir, Slt Bernard
je suis de ton avis , pas de fichier là on voit pas ??? , j'ai fait une macro il y a qq années pour extraire des chaînes du même
genre puis les recopier en plus clair , mais hélàs je peux pas comparer si le pb de Kloe est identique !!
 

Discussions similaires

Réponses
4
Affichages
200
Réponses
9
Affichages
172
Réponses
46
Affichages
884
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…