Macro pour incrementer du texte [Résolu]

Signaler
Messages postés
5
Date d'inscription
mardi 24 septembre 2013
Statut
Membre
Dernière intervention
31 octobre 2013
-
Messages postés
5
Date d'inscription
mardi 24 septembre 2013
Statut
Membre
Dernière intervention
31 octobre 2013
-
Bonjour,

Je souhaiterais avoir une macro permettant de renseigner un texte un certain nombre de fois dans une colonne, une fois accompli passer aux remplissage d'un autre texte ainsi de suite jusqu'à une valeur donné et ensuite se décaler dans la colonne à côte pour effectuer le reste des opérations.

Par exemple :
A6 = TATA B6 = 15
A7 = TITI B7 = 14
A8 = TOTO B8 = 15

C15 = 25 D15 = 10 E15 = 10

en C16 je voudrais "TATA" 15 fois donc jusqu'à C30, ensuite écrire "TITI" 10 fois (valeur C15) donc jusqu'à C41 et les 4 "TITI" restant les inclure la colonne d'à côté donc en D26, les compléter avec 6 "TOTO" (valeur D15) donc jusqu'à D50 puis finir en colonne E... et ainsi de suite.

3 réponses

Messages postés
5
Date d'inscription
mardi 24 septembre 2013
Statut
Membre
Dernière intervention
31 octobre 2013

Messages postés
29788
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 octobre 2020
338
Bonjour,

Normalement ici, on fourni une aide sur un souci technique précis.
Souci pour lequel l'utilisateur nous montre le code qu'il a essayé de réaliser et pour lequel il rencontre un problème..
Bref, normalement , nous ne fournissons pas un code sur mesure (et surtout ... sur commande...).

Mais bon,
Vu la complexité de la demande (humm...sans commentaires...), j'ai pris 50 secondes pour te proposer celui-ci :

Sub rempl()
Dim NbCopy As Integer
    NbCopy = 0
'On commence la copie à la ligne 16
Dim Start As Integer
    Start = 16
' Colonne C
Dim Col As Integer
    Col = 3
'NbLignes Max première colonne
        NbLmax = Cells(15, Col).Value
        
'faire une boucle des lignes 6 à 12'
For l = 6 To 12
    MonTxt = Cells(l, 1).Value
    Nbfois = Cells(l, 2).Value
           
    'boucle pour inscrire les données
    For i = Start To Start + Nbfois
        If NbCopy = NbLmax Then
            Col = Col + 1
            NbLmax = Cells(15, Col).Value
            ' si la colonne n'a pas de NbLmax, on quitte
             If NbLmax = "" Then Exit Sub
            NbCopy = 0
        End If
        NbCopy = NbCopy + 1
        Cells(i, Col).Value = MonTxt
    Next 'On passe à la valeur suivante
       Start = Nbfois + Start + 1
Next
End Sub


Cordialement,
Jordane
Messages postés
5
Date d'inscription
mardi 24 septembre 2013
Statut
Membre
Dernière intervention
31 octobre 2013

Merci Jordane, n'étant pas très doué et nouveau sur le forum je te remerci pour ta réponse et ta rapidité cela convient parfaitement.

Désolé la prochaine fois je proposerai un code

merci encore et au moins j'ai compris la démarche et le code
Messages postés
29788
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 octobre 2020
338
je l'ai écrit un peu vite..
Pour comprendre son fonctionnement tu peux l'exécuter en mode pas à pas et regarder ce que le code fait.

Sinon, si la réponse te convient, pense à mettre la discussion en RESOLU ( lien en haut de la fenêtre).

Bonne continuation.
Messages postés
5
Date d'inscription
mardi 24 septembre 2013
Statut
Membre
Dernière intervention
31 octobre 2013

Merci pour l'info