Générer une page html avec l'adresse de toutes mes cellules

Résolu/Fermé
josep-t - 11 avril 2017 à 10:35
 josep-t - 12 avril 2017 à 13:02
Bonjour,

Comme l'indique le titre, avec une macro, j'aimerai générer une page html avec l'adresse de toutes mes cellules, et ceci pour chaque feuilles de mon classeur. Je sais le faire pour une adresse, mais quand il s'agit d'afficher plusieurs adresse dans mon fichier html, c'est là que ça devient compliqué.

Voici mon code :


Sub Html1()

Dim fs As Object
Dim i As Byte
Dim j As Byte


For i = 1 To Sheets.Count
For j = 7 To 10

Set fs = CreateObject("Scripting.FileSystemObject")

Dim f As Object

Set f = fs.opentextfile("myFile" & i & ".html", 2, True)
Sheets(i).Activate

f.writeline "<html>"

f.writeline "<head>"

f.writeline "<title>Macro</title>"

f.writeline "</head>"

f.writeline "<body>"

f.writeline " <a href=""" rel="nofollow noopener noreferrer" target="_blank" & Cells(j, 10) & """>" & Cells(j, 7) & "</a>"

f.writeline "</body>"

f.writeline "</html>"

f.Close
Next j
Next i
End Sub



Dans mon fichier excel, j'ai dans une colonne, un nom, et en face, dans une autre colonne, une adresse. Ce nom pointe en fait vers cette adresse. Dans mon code, J'ai alors essayé de rajouter une boucle j pour qu'il y ait 4 adresses dans mon fichier html. Malheureusement, on ne voit toujours qu'une seule adresse, et c'est la dernière qu'il prend en compte, donc la cellule (10,7) associé à son adresse de la cellule (10,10).

Quelqu'un aurait-il une idée?

Merci d'avance :)
A voir également:

12 réponses

patty5046 Messages postés 46 Date d'inscription lundi 8 février 2016 Statut Membre Dernière intervention 15 septembre 2023 5
11 avril 2017 à 11:29
Bonjour

Peut-être tout simplement mettre la boucle j comme ceci,

For j = 7 To 10
f.writeline "  <a href=""" rel="nofollow noopener noreferrer" target="_blank" & Cells(j, 10) & """>" & Cells(j, 7) & "</a>
Nextj"


si j'ai bien compris ce que vous souhaitez
Bon courage
0
Bonjour patty5046,

Déjà merci de ta réponse. Désolé premièrement, la copie de mon code ne s'est pas bien effectuée, la ligne de mon code était seulement :

f.writeline " <a href=""" rel="nofollow noopener noreferrer" target="_blank" & Cells(j, 10) & """>" & Cells(j, 7) & "</a>"


J'ai essayé ce que tu m'a dis mais j'ai une erreur à cette ligne là qui s'affiche : "Incompatibilité de type"

Merci encore de ton aide :)
0
J'ai réussi à boucler sur les 4 lignes contenant mes adresses. Cependant je ne sais pas comment appliquer cela à toutes mes cellules qui ne sont pas vide. J'ai essayé avec "Cells.Value" sans succès.
Voici mon code :

Sub Html1()

Dim fs As Object
Dim i As Byte
Dim j As Long


For i = 1 To Sheets.Count

Set fs = CreateObject("Scripting.FileSystemObject")

Dim f As Object

Set f = fs.opentextfile("myFile" & i & ".html", 2, True)
Sheets(i).Activate



f.writeline "<html>"

f.writeline "<head>"

f.writeline "<title>Macro</title>"

f.writeline "</head>"

f.writeline "<body>"

For j = 7 To Cells.Value

f.writeline "<br>"
f.writeline " <a href=""" rel="nofollow noopener noreferrer" target="_blank" & Cells(j, 10) & """>" & Cells(j, 7) & "</a>"
Next j
f.writeline "</br>"

f.writeline "</body>"

f.writeline "</html>"

f.Close
Next i
End Sub

0
patty5046 Messages postés 46 Date d'inscription lundi 8 février 2016 Statut Membre Dernière intervention 15 septembre 2023 5
11 avril 2017 à 16:00
Rebonjour

Apparemment tu pars de la ligne 7, tu dois donc compter le nombre de lignes chargées à partir de la ligne 7 dans la colonne qui t'intéresse ,soit la colonne 7 (G), soit la colonne 10 (J) et tu remplaces Cells.Value par ce résultat.

Bon courage
0
Merci pour votre réponse, mais pouvez vous expliciter? Cela veut dire que je dois rajouter encore une autre boucle?
Désolé je viens de débuter il y a 1 semaine dans les macros...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'avais trouvé cela, mais il doit y avoir une meilleur façon car si il y a une ligne qui dépasse 300 je vais la manqué

Sub Html1()

Dim fs As Object
Dim i As Byte
Dim j As Long


For i = 1 To Sheets.Count

Set fs = CreateObject("Scripting.FileSystemObject")

Dim f As Object

Set f = fs.opentextfile("myFile" & i & ".html", 2, True)
Sheets(i).Activate



f.writeline "<html>"

f.writeline "<head>"

f.writeline "<title>Macro</title>"

f.writeline "</head>"

f.writeline "<body>"

For j = 7 To 300
If Not IsEmpty(Cells(j, 7)) Then
f.writeline "<br>"
f.writeline " <a href=""" rel="nofollow noopener noreferrer" target="_blank" & Cells(j, 10) & """>" & Cells(j, 7) & "</a>"
End If
Next j
f.writeline "</br>"

f.writeline "</body>"

f.writeline "</html>"

f.Close
Next i
End Sub

0
patty5046 Messages postés 46 Date d'inscription lundi 8 février 2016 Statut Membre Dernière intervention 15 septembre 2023 5
12 avril 2017 à 10:33
Bonjour

Si c'est la colonne G qui prime

pour obtenir le nombre de lignes de cette colonne, tu écris en début de procédure :

NbLig = Range("G65536" ).End(xlUp).Row 


Si c'est la J :

NbLig = Range("J65536" ).End(xlUp).Row 


ensuite tu remplaces le nombre 300 par NbLig

Bon courage
0
Cela compte toutes les lignes ou seulement celles qui sont chargés? J'ai essayé de rajouter votre formule dans mon code en l'adaptant à ma colonne qui contient les noms, mais maintenant j'obtiens une page vierge :/


Sub Html1()

Dim fs As Object
Dim i As Byte
Dim j As Long


For i = 1 To Sheets.Count

Set fs = CreateObject("Scripting.FileSystemObject")

Dim f As Object

Set f = fs.opentextfile("myFile" & i & ".html", 2, True)
Sheets(i).Activate



f.writeline "<html>"

f.writeline "<head>"

f.writeline "<title>Macro</title>"

f.writeline "</head>"

f.writeline "<body>"

NbLig = Range("C7").End(xlUp).Row
For j = 7 To NbLig
f.writeline "<br>"
f.writeline " <a href=""" rel="nofollow noopener noreferrer" target="_blank" & Cells(j, 10) & """>" & Cells(j, 7) & "</a>"
Next j
f.writeline "</br>"

f.writeline "</body>"

f.writeline "</html>"

f.Close
Next i
End Sub

0
patty5046 Messages postés 46 Date d'inscription lundi 8 février 2016 Statut Membre Dernière intervention 15 septembre 2023 5
12 avril 2017 à 11:06
Vous avez mis :

Range("C7").End(xlUp).Row

au lieu de
Range("C65536").End(xlUp).Row


donc votre nombre de lignes n'est que le nombre de lignes chargées au dessus le la ligne 7

Bonne continuation
0
Merci beaucoup pour votre aide, mais j'obtiens le même résultat précédent :


Sub Html1()

Dim fs As Object
Dim i As Byte
Dim j As Long


For i = 1 To Sheets.Count

Set fs = CreateObject("Scripting.FileSystemObject")

Dim f As Object

Set f = fs.opentextfile("myFile" & i & ".html", 2, True)
Sheets(i).Activate



f.writeline "<html>"

f.writeline "<head>"

f.writeline "<title>Macro</title>"

f.writeline "</head>"

f.writeline "<body>"

NbLig = Range("C65536").End(xlUp).Row
For j = 7 To NbLig
f.writeline "<br>"
f.writeline " <a href=""" rel="nofollow noopener noreferrer" target="_blank" & Cells(j, 10) & """>" & Cells(j, 7) & "</a>"
Next j
f.writeline "</br>"

f.writeline "</body>"

f.writeline "</html>"

f.Close
Next i
End Sub
0
patty5046 Messages postés 46 Date d'inscription lundi 8 février 2016 Statut Membre Dernière intervention 15 septembre 2023 5
12 avril 2017 à 11:31
Votre colonne C est-elle chargée?

Pour contrôler votre travail, mettez un msgbox et essayez peut-être avec colonne G :
NbLig = Range("G65536").End(xlUp).Row
MsgBox NbLig


N'ayant pas le fichier, je travaille un peu à l'aveugle
A +
0
Merci beaucoup pour votre aide ça marche ! je m'étais trompé car je ne sais pas pourquoi mais dans excel, mes colonnes sont indiqués par des numéros et non par des lettres, j'ai en fait : "C1, C2, C3 (...)" et ainsi de suite pour les colonnes donc ça ne pouvait pas marcher avec "C65536".

Pour information savez-vous comment modifier ça qui est selon moi source d'erreurs?

Merci encore pour votre précieuse aide! Si vous ne pouvez pas répondre à ma dernière question je met en résolu c'est pas grave, car ce n'était pas le sujet :)
0
patty5046 Messages postés 46 Date d'inscription lundi 8 février 2016 Statut Membre Dernière intervention 15 septembre 2023 5
12 avril 2017 à 12:32
Contente que vous vous en soyez sorti.
Pour la dernière question, voir cette page

https://www.lecfomasque.com/excel-vos-entetes-de-colonnes-presentent-des-chiffres-au-lieu-des-lettres/

ou celle-là :

https://support.microsoft.com/fr-ca/help/269866/columns-and-rows-are-labeled-numerically-in-excel

Bonne fin de journée
0
Merci j'ai réussi pour les chiffres des colonnes qui étaient à la place des lettres.

Merci beaucoup pour y avoir passé du temps et m'apporter votre aide, je vous en suis très reconnaissant, bonne fin de journée à vous aussi :)
0