Macro pour incrementer du texte

Résolu
esttevan Messages postés 5 Date d'inscription mardi 24 septembre 2013 Statut Membre Dernière intervention 31 octobre 2013 - 24 sept. 2013 à 15:22
esttevan Messages postés 5 Date d'inscription mardi 24 septembre 2013 Statut Membre Dernière intervention 31 octobre 2013 - 24 sept. 2013 à 16:56
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

esttevan Messages postés 5 Date d'inscription mardi 24 septembre 2013 Statut Membre Dernière intervention 31 octobre 2013
24 sept. 2013 à 15:25
0
jordane45 Messages postés 38211 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 juin 2024 344
Modifié par jordane45 le 24/09/2013 à 15:55
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
0
esttevan Messages postés 5 Date d'inscription mardi 24 septembre 2013 Statut Membre Dernière intervention 31 octobre 2013
24 sept. 2013 à 16:47
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
0
jordane45 Messages postés 38211 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 23 juin 2024 344
24 sept. 2013 à 16:53
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.
0
esttevan Messages postés 5 Date d'inscription mardi 24 septembre 2013 Statut Membre Dernière intervention 31 octobre 2013
24 sept. 2013 à 16:56
Merci pour l'info
0
Rejoignez-nous