Bonjour,
je vous contacte, car j'ai un problème très étrange avec des plages de cellules. Le voici. Je fais cette Sub :
elle est un peu stupide cette Sub (j'en conviens, c'est pour être didactique), mais elle fonctionne. Elle m'affiche les noms de toutes les cellules de la ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Sub test() Dim ligne As Range Set ligne = Range("B4:O4") Dim cellule As Range For Each cellule In ligne MsgBox cellule.Address Next cellule End Sub
Ensuite, je fais cette Sub :
Pas beaucoup plus intelligente, mais là encore, elle a le mérite de fonctionner. Elle me donne les adresses de toutes les lignes de la plage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Sub test2() Dim plage As Range Set plage = Range("B4:O10") Dim ligne As Range For Each ligne In plage.Rows MsgBox ligne.Address Next ligne End Sub
Maintenant je combine les deux :
Et là, ça ne renvoie pas le résultat voulu (à savoir les adresses de toutes les cellules de la plage). Ma question est : pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub test3() Dim plage As Range Set plage = Range("B4:O10") Dim ligne As Range Dim cellule As Range For Each ligne In plage.Rows 'MsgBox ligne.Address For Each cellule In ligne MsgBox cellule.Address Next cellule Next ligne End Sub
Juste pour ceux qui s'apprêtent à me répondre que pour avoir toutes les adresses de cellules de la plage, il n'est pas nécessaire de passer par l'étape qui consiste à parcourir les lignes, c'est exact pour cet exemple. Mais en fait mon problème est de faire une fonction qui me renvoie le code XHTML d'une en tête d'un tableau en fonction de la plage qu'on passe en paramètre :
Je vous remercie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Function creerEnTeteXHTML(ByVal plageEnTete As Range) As String Dim resultat As String resultat = "<thead>" Dim ligne As Range Dim cellule As Range Dim i As Integer For Each ligne In plageEnTete.Rows Dim cellule As Range For Each cellule In ligne If cellule.Address = ligne(1).Address Then resultat = resultat + "<tr><th>" + cellule.Text + "</th>" ElseIf cellule.Address = ligne(ligne.Count).Address Then resultat = resultat + "<th>" + cellule.Text + "</th></tr>" Else resultat = resultat + "<th>" + cellule.Text + "</th>" End If Next i Next ligne creerEnTeteXHTML = resultat + "</thead>" End Function
Partager