Modifier un code

maval

XLDnaute Barbatruc
Bonjour,

J'ai un code qui fonctionne bien mais j'aimerai lui apporte une modification.
Voici mon code:
Code:
Sub inser_TR()
n = 1
ligne = 5

t2 = "</tr> <tr>"
For m = 5 To Range("H1") * 12 Step 12
t1 = "</tr><tr> <!--" & n & " -->"
  Range("d" & m) = t1
  Range("d" & m + 6) = t2
  n = n + 1
Next
End Sub
[code]Sub inser_TR()
n = 1
ligne = 5

t2 = "</tr> <tr>"
For m = 5 To Range("H1") * 12 Step 12
t1 = "</tr><tr> <!--" & n & " -->"
  Range("d" & m) = t1
  Range("d" & m + 6) = t2
  n = n + 1
Next
End Sub


J'aimerai que sur la première ligne il mette que <tr> au lieu de </tr> <tr>
et à la dernière ligne qu'il ajoute </tr> en sachant qu'il peut avoir 1500 lignes.

Je vous remercie d'avance

Cordialement

max
 

vgendron

XLDnaute Barbatruc
Bonjour..
sans plus d'explication et de fichier..
VB:
Sub inser_TR()
n = 1
ligne = 5

t2 = "</tr> <tr></tr>"
For m = 5 To Range("H1") * 12 Step 12
t1 = "<tr> <!--" & n & " -->"
  Range("d" & m) = t1
  Range("d" & m + 6) = t2
  n = n + 1
Next
End Sub
 

vgendron

XLDnaute Barbatruc
Salut
De quelle macro parles tu?
quel problème ?

Pour ta macro Mymacro, tu n'utilises pas complètement l'intérêt du split
regarde la modif ici
VB:
Sub MYmacro()
FinListe = Range("A" & Rows.Count).End(xlUp).Row
lg = 6
[e6:e65000].ClearContents 'pourquoi effacer la colonne E alors que c'est en G que tu écris?
For lig = 6 To FinListe
    tx = Split(Cells(lig, 1), "-") 'créer un tablo avec le CP et Ville
    Ville = Trim(tx(1)) 'on enlève les espaces avant et après la ville
    CP = Trim(tx(0))
    Dep = Left(CP, 2)

    Fx = Replace("<td class=@td_text@> " & Ville & " <br>- " & CP & "</td>", "@", """")
    Cells(lg, 7) = Fx
    'Fx = "<td class=@td_image@><a href=@" & Ville & ".html@><img src=@../Blason_france/blason_alpha/" & Ville & "-" & Dep & ".jpg@ width=@95@ height=@120@ ></a></td>"
    Fx = "<td class=@td_image@><a href=@" & Replace(Ville, " ", "_") & ".html@><img src=@../../dossier_armorial/Blason_france/blason_alpha/" & Replace(Ville, " ", "_") & "-" & Dep & ".png@ width=@95@ height=@120@ ></a></td>"
    Fx = Replace(Fx, "@", """")
    Cells(lg + 6, 7) = Fx
    lg = lg + 1: i = i + 1
    If i = 5 Then
        'k = k + 1: Cells(lg, 4) = "--->>> " & k
        k = k + 1: Cells(lg, 4) = "</tr><tr>": Cells(lg - 6, 4) = "<tr> <!-- " & k & " -->"
        lg = lg + 7: i = 0
    End If
Next lig
End Sub
 

vgendron

XLDnaute Barbatruc
Autre question..
dans cette ligne de code
VB:
  Fx = Replace("<td class=@td_text@> " & Ville & " <br>- " & CP & "</td>", "@", """")
Pourquoi tu écris une chaine de caractères avec "@" si c'est pour l'enlever aussitot avec la fonction replace..??

autant écrire directement ce que tu veux non? ou un truc m'échappe?
FxText = "<td class=""td_text"">" & Ville & "<br>- " & CP & "</td>"
 

vgendron

XLDnaute Barbatruc
avec ce code peut etre..... si j'ai tapé juste sur le pb de Tr 37 qui n'apparait pas...

VB:
Sub Inser_TRss()
n = 1
ligne = 5

t2 = "</tr> <tr>"
For m = 5 To Range("H1") * 12 Step 12
    t1 = "</tr><tr> <!--" & n & " -->"
    Range("d" & m) = t1
    Range("d" & m + 6) = t2
    n = n + 1
Next m
End Sub


Sub Inser_TR()
n = 1
ligne = 5

t2 = "</tr> <tr> </tr>"
For m = 5 To Range("H1") * 12 Step 12
    t1 = "<tr> <!--" & n & " -->"
    Range("d" & m) = t1
    Range("d" & m + 6) = t2
    n = n + 1
Next m
End Sub

Sub supprime_parentheses()
Dim c As Range
Application.ScreenUpdating = False
For Each c In Range("a1", Range("a65536").End(xlUp))
If Not IsNumeric(c) And c <> "" Then
    pos = InStr(c, "(")
    If pos > 0 Then
        c = Left(c, pos - 1)
    End If

End If: Next c
Columns(1).Hyperlinks.Delete

End Sub


Sub effacer()
Range("a5:g2500").ClearContents
End Sub

Sub MYmacro()
FinListe = Range("A" & Rows.Count).End(xlUp).Row
lg = 6
[G6:G65000].ClearContents 'pourquoi effacer la colonne E alors que c'est en G que tu écris?
For lig = 6 To FinListe
    tx = Split(Cells(lig, 1), "-") 'créer un tablo avec le CP et Ville
    ville = Trim(tx(1)) 'on enlève les espaces avant et après la ville
    CP = Trim(tx(0))
    Dep = Left(CP, 2)

    'Fx = Replace("<td class=@td_text@> " & Ville & " <br>- " & CP & "</td>", "@", """") 'pourquoi remplacer quelque chose dans une chaine que tu construits en meme temps
    'autant ecrire la chaine correctement directement ??
    FxText = "<td class=""td_text"">" & ville & "<br>- " & CP & "</td>"
    Cells(lg, 7) = FxText
   
    'Fx = "<td class=@td_image@><a href=" & Ville & ".html@><img src=@../Blason_france/blason_alpha/" & Ville & "-" & Dep & ".jpg@ width=@95@ height=@120@ ></a></td>"
    FxImage = "<td class=""td_image""><a href=""" & ville & ".html@""<img src=""../../dossier_armorial/Blason_france/blason_alpha/" & ville & "-" & Dep & ".png"" width=""95"" height=""120"" ></a></td>"
    Cells(lg + 6, 7) = FxImage
   
    lg = lg + 1: i = i + 1
    If i = 5 Then
        'k = k + 1: Cells(lg, 4) = "--->>> " & k
        'k = k + 1 : Cells(lg, 4) = "</tr><tr>": Cells(lg - 6, 4) = "<tr> <!-- " & k & " -->"
        lg = lg + 7: i = 0
    End If
Next lig
Inser_TR
End Sub
 

maval

XLDnaute Barbatruc
Salut vgendron,

Je te remercie pour les explications et le travail que tu as réalisé.
Pour la macro "MYmacro" tous va bien sauf que le dernier paragraphe s'il n'est pas complet c'est à dire (5) noms comme ceci "Regarde sur le post ou j'ai mis mon fichier"
Code:
<td class="td_text">AAST<br>- 64 001</td>
<td class="td_text">ABANCOURT<br>- 59 001</td>
<td class="td_text">ABANCOURT<br>- 60 001</td>
<td class="td_text">ABAUCOURT<br>- 54 001</td>
<td class="td_text">ABBARETZ<br>- 44 001</td>

<td class="td_image"><a href="AAST.html@"<img src="../../dossier_armorial/Blason_france/blason_alpha/AAST-64.png" width="95" height="120" ></a></td>
<td class="td_image"><a href="ABANCOURT.html@"<img src="../../dossier_armorial/Blason_france/blason_alpha/ABANCOURT-59.png" width="95" height="120" ></a></td>
<td class="td_image"><a href="ABANCOURT.html@"<img src="../../dossier_armorial/Blason_france/blason_alpha/ABANCOURT-60.png" width="95" height="120" ></a></td>
<td class="td_image"><a href="ABAUCOURT.html@"<img src="../../dossier_armorial/Blason_france/blason_alpha/ABAUCOURT-54.png" width="95" height="120" ></a></td>
<td class="td_image"><a href="ABBARETZ.html@"<img src="../../dossier_armorial/Blason_france/blason_alpha/ABBARETZ-44.png" width="95" height="120" ></a></td>

Il me sort avec comme ceci c'est à dire avec des lignes vides, normale il manque des noms (3)
Code:
<td class="td_text">AZINCOURT<br>- 62 069</td>
<td class="td_text">AZOUDANGE<br>- 57 044</td>




<td class="td_image"><a href="AZINCOURT.html@"<img src="../../dossier_armorial/Blason_france/blason_alpha/AZINCOURT-62.png" width="95" height="120" ></a></td>
<td class="td_image"><a href="AZOUDANGE.html@"<img src="../../dossier_armorial/Blason_france/blason_alpha/AZOUDANGE-57.png" width="95" height="120" ></a></td>
Peut on faire quelque chose pour eviter cela?

Pour la macro Sub Inser_TR() j'ai un problème dans la colonne "D" sa me donne ceci "</tr> <tr> </tr>" alors que je devrait avoir ceci </tr> <tr>

J’espère m'avoir bien expliquer pas toujours facile.
Je te remercie et te souhaite une bonne journée

Max
 

vgendron

XLDnaute Barbatruc
Hello

Voici ta macro "Mymacro" qui fait tout..
remplir la colonne G et la colonne D
VB:
Sub MYmacro()
Application.ScreenUpdating = False
NbreTR = Range("H1")
NbVilles = Range("ListeVilles").Rows.Count
FinListe = NbVilles + 5

lg = 6 'première ligne pour la colonne G
NbBloc = 0 'initialisation du nombre de villes inscrites par bloc

numTR = 1
Range("D5:G" & Range("G" & Rows.Count).End(xlUp).Row).ClearContents 'On efface que ce qui est ecrit

For NumVille = 1 To NbVilles
    tx = Split(Cells(NumVille + 5, 1), "-") 'créer un tablo avec le CP et Ville
    ville = Trim(tx(1)) 'on enlève les espaces avant et après la ville
    CP = Trim(tx(0))
    Dep = Left(CP, 2)

    'on prépare les chaines à placer en colonne G
    'Fx = Replace("<td class=@td_text@> " & Ville & " <br>- " & CP & "</td>", "@", """") 'pourquoi remplacer quelque chose dans une chaine que tu construits en meme temps
    FxText = "<td class=""td_text"">" & ville & "<br>- " & CP & "</td>"
    'Fx = "<td class=@td_image@><a href=" & Ville & ".html@><img src=@../Blason_france/blason_alpha/" & Ville & "-" & Dep & ".jpg@ width=@95@ height=@120@ ></a></td>"
    FxImage = "<td class=""td_image""><a href=""" & ville & ".html@""<img src=""../../dossier_armorial/Blason_france/blason_alpha/" & ville & "-" & Dep & ".png"" width=""95"" height=""120"" ></a></td>"

    'on inscrit FxText
    Cells(lg, 7) = FxText
    'et la chaine "<tr><!--NumTR-->
    If NbBloc = 0 Then
        Range("D" & lg - 1) = "<tr> <!--" & numTR & " -->"
        numTR = numTR + 1
    End If
   
    NbBloc = NbBloc + 1 'on incrémente le nombre de ville inscrite par blox
    'si on peut faire un bloc complet de 5 villes, alors on écrit FXImage 6 lignes en dessous
    If NumVille / 5 <= NbreTR - 1 Then 's'il reste au moins 5 villes = bloc complet
        Cells(lg + 6, 7) = FxImage
        If NbBloc = 5 Then
            Range("D" & lg + 1) = "</tr> <tr>"
        End If
    Else
        Cells(lg + NbVilles - NumVille + 1 + NbBloc, 7) = FxImage
        If NumVille = NbVilles Then
            Range("D" & lg + 1) = "</tr> <tr>"
        End If
    End If

    lg = lg + 1
    If NbBloc = 5 Then 'pour séparer les blocs
        lg = lg + 7
        NbBloc = 0
    End If
Next NumVille

Application.ScreenUpdating = True
End Sub
 

vgendron

XLDnaute Barbatruc
ha oui.. pardon. j'ai oublié de préciser que ListeVilles est une zone nommée dynamiquement..
ca évite que tes formules en D3 et D4 ne fonctionnent plus si tu ajoutes ou supprimes des villes..
voir PJ
 

Pièces jointes

  • final_Theze.xlsm
    81.6 KB · Affichages: 19

maval

XLDnaute Barbatruc
Re,

Je t'assure je viens de reprendre ton fichier j'ai ajouté une liste de nom en colonne "A" et quand je click sur Exécuter la macro j'ai une erreur d’exécution "9" L'indice n'appartient pas à la sélection.
Sur la ligne "ville = Trim(tx(1)) 'on enlève les espaces avant et après la ville"

@+

max
 

vgendron

XLDnaute Barbatruc
et bah voila.. tu vois que tu modifies quelque chose....
j'ai ajouté une liste de nom en colonne "A"
quelle liste de noms ajoutes tu? pour quoi faire?

je t'ai parlé de la zone nommée ListeVilles..
cette zone existe déjà dans le fichier que je t'ai envoyé... evidemment.. sinon, ca ne fonctionnerait pas..
comme c'est une liste "Dynamique", tu ne peux la voir que en ouvrant le gestionnaire de noms.
 

Discussions similaires

Statistiques des forums

Discussions
312 333
Messages
2 087 375
Membres
103 529
dernier inscrit
gonzi