Résolu Microsoft 365 problème de boucle VBA

ninajams

XLDnaute Junior
Bonjour à tous,

Après 10 ans d'inactivité j'ai décidé de me remettre sur BVA. Donc après plusieurs heures j'ai réussi à faire une macro qui me fait le job.
Mes variables se situe toute dans des cellules d'un tableau excel. L'objectif de la macro est un peu similaire à du publipostage : je veux juste que mes variable s'insère dans le texte. et que le résultat soit dans une cellule de la même lignes (colonne E).Avec la macro ci-dessous j'obtiens le résultat voulu mais seulement dans la cellule active. Donc je dois me positionné dans la colonne E. Ce qui est normale vue que tout fait référence à la cellule active.
Je peux donc lancer environs 300 fois la macro (1 fois pour chaque ligne du tableau) ou bien faire une boucle. J'ai aussi essayé de faire en sorte que la macro agissent pour toute les lignes sélectionné mais le mieux que j'ai réussi à obtenir était d'avoir les données destinés à la cellule active sur les autres lignes.

Par contre pour la boucle j'ai beau essayé un peu tous ce que j'ai trouvé sur internet je n'ai rien réussi. Je ne pense pas que ma macro respect les règles de l'art notamment avec "ActiveCell.FormulaR1C1".

PS : Petite contrainte, il faut que le texte soit dans la cellule car je vais directement importer le résultat dans mon système.

Merci pour votre aide.


Sub descriptif()
'
Dim Nom_Complet_du_produit As Range, Nom_marque As Range, Origine_marque As Range, Durée_de_maturation As Range, Nom_du_produit As Range, contenance As Range, Dosage As Range

Set Nom_Complet_du_produit = Cells(ActiveCell.Row, 3)
Set Nom_marque = Cells(ActiveCell.Row, 6)
Set Origine_marque = Cells(ActiveCell.Row, 13)
Set Durée_maturation = Cells(ActiveCell.Row, 10)
Set Nom_du_produit = Cells(ActiveCell.Row, 8)
Set contenance = Cells(ActiveCell.Row, 7)
Set Dosage = Cells(ActiveCell.Row, 11)

ActiveCell.FormulaR1C1 = "<h3 style=""text-align: center;""><strong><span style=""font-size:13px"">" & Nom_Complet_du_produit & "</span></strong></h3>" & Chr(10) _
& "" & Chr(10) _
& "<p>" & Nom_marque & " est une marque " & Origine_marque & " produisant des arômes concentrés pour cigarette électronique.</p>" & Chr(10) _
& "" & Chr(10) _
& "<p>Le " & Nom_du_produit & " est conditionné dans un flacon d'une contenance de " & contenance & _
" muni d'un embout compte-goutte et d'une sécurité enfant.<span style=""font-size:13px"">Les arômes, composés de PG (Propylène Glycol), doivent être impérativement dilués dans une base PG/VG. Le taux de dilution recommandé est : " & Dosage & "%. La phase de maturation minimum recommandé est de " & _
"" & Durée_maturation & ".</p>" & Chr(10) _
& "" & Chr(10) _
& "<p><span style=""font-size:13px"">Vous pouvez retrouver un large choix d'outils et d'accessoires dans la <a href=""https://www.onoris.fr/diy/"">catégorie DIY</a> (Do It Yourself) pour vous aider dans la réalisation de vos recettes.</span></p>" & Chr(10) & "" & Chr(10) & "<p><span style=""font-size:13px"">Pour plus d'informations générales sur les arômes, les cigaret" & _
"tes électroniques et les liquides : <a href=""https://www.onoris.fr/blog/"">Le Blog</a></span></p>"

End Sub
 
Ce fil a été résolu! Aller à la solution…

Robert

XLDnaute Barbatruc
Bonjour Ninjams, bonjour le forum,

Essaie comme ça :

VB:
Sub descriptif()
Dim O As Worksheet
Dim DL As Integer
Dim Nom_Complet_du_produit As String
Dim Nom_marque As String
Dim Origine_marque As String
Dim Durée_de_maturation As String
Dim Nom_du_produit As String
Dim contenance As String
Dim Dosage As String

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
'définit la dernière ligne éditée DL de la colonne C de l'onglet O (colonne `qa adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "C").End(xlUp).Row
For I = 1 To DL 'boucle sur toutes les ligne de 1 à DL (à adapter si ça commence sur une autre ligne que la ligne 1)
    Nom_Complet_du_produit = O.Cells(I, 3).Value
    Nom_marque = O.Cells(I, Row, 6).Value
    Origine_marque = O.Cells(I, 13).Value
    Durée_maturation = O.Cells(I, 10).Value
    Nom_du_produit = O.Cells(I, 8).Value
    contenance = O.Cells(I, 7).Value
    Dosage = O.Cells(I, 11).Value
    O.Cells(I, 5).Value = "<h3 style=""text-align: center;""><strong><span style=""font-size:13px"">" & Nom_Complet_du_produit & "</span></strong></h3>" & Chr(10) _
    & "" & Chr(10) _
       & "<p>" & Nom_marque & " est une marque " & Origine_marque & " produisant des arômes concentrés pour cigarette électronique.</p>" & Chr(10) _
       & "" & Chr(10) _
       & "<p>Le " & Nom_du_produit & " est conditionné dans un flacon d'une contenance de " & contenance & _
       " muni d'un embout compte-goutte et d'une sécurité enfant.<span style=""font-size:13px"">Les arômes, composés de PG (Propylène Glycol), doivent être impérativement dilués dans une base PG/VG. Le taux de dilution recommandé est : " & Dosage & "%. La phase de maturation minimum recommandé est de " & _
       "" & Durée_maturation & ".</p>" & Chr(10) _
       & "" & Chr(10) _
       & "<p><span style=""font-size:13px"">Vous pouvez retrouver un large choix d'outils et d'accessoires dans la <a href=""https://www.onoris.fr/diy/"">catégorie DIY</a> (Do It Yourself) pour vous aider dans la réalisation de vos recettes.</span></p>" & Chr(10) & "" & Chr(10) & "<p><span style=""font-size:13px"">Pour plus d'informations générales sur les arômes, les cigaret" & _
       "tes électroniques et les liquides : <a href=""https://www.onoris.fr/blog/"">Le Blog</a></span></p>"
Next I
End Sub
 
Ce message a été identifié comme étant une solution!

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas