Bonjour, j'ai cette macro mais je n'arrive pas à la faire commencer à partir de la dernière ligne non vide de ma feuille.
Toutes les cellules de la dernière ligne ne sont pas forcément remplies...
Par exemple, je mets juste "texte" dans B5.....
Si je modifie ce bout de code --> fin = Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
en remplaçant le A par B, j'ai bien ma macro qui commence ou je veux mais le tableau n'est pas en entier.
Quelqu'un aurait une idée SVP
Merci d'avance
Toutes les cellules de la dernière ligne ne sont pas forcément remplies...
Par exemple, je mets juste "texte" dans B5.....
Si je modifie ce bout de code --> fin = Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
en remplaçant le A par B, j'ai bien ma macro qui commence ou je veux mais le tableau n'est pas en entier.
Quelqu'un aurait une idée SVP
Merci d'avance
VB:
Sub macro_paroi()
Application.ScreenUpdating = False
Dim tablo() As Variant
Dim NomsColonnes() As Variant
Set MonDico = CreateObject("Scripting.Dictionary")
Sheets("Feuil2").Range("A7:AN9000" & fin).Clear
'Dernli = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
NomColonneCherchée = "NOM"
With Sheets("IMPORT").Rows(1) 'on cherche dans la ligne 1 de la feuile IMPORT
Set c = .Find(NomColonneCherchée)
If Not c Is Nothing Then
col = c.Column
Else
MsgBox "Pas trouvé le nom "
End If
End With
tablo = Sheets("IMPORT").UsedRange.Value 'on récupère l'ensemble des data de la feuille Import
'on récupère la liste des noms sans doublon de la colonne "col" que l'on met dans un dictionnaire
For i = LBound(tablo, 1) + 1 To UBound(tablo, 1) 'lbound+1 pour éviter la ligne d'entete
If tablo(i, col) <> "" Then MonDico(tablo(i, col)) = ""
Next i
NomsColonnes = Array("différents éléments de la paroi", "", "", "", "Epaisseur (cm)", "", "", "Lambda", "", "", "Résistance (m².K)/W")
For Each Nom In MonDico.keys 'pour chaque nom contenu dans le dictionnaire
fin = Sheets("Feuil2").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).Row 'on récupère la dernière ligne de la feuille1--> début du tableau
Range("A" & fin + 1) = UCase(Nom) 'on place le Nom en majuscule --> Nom de la paroi
Range("A" & fin + 1).Font.Bold = True 'et en gras --> Nom de la paroi
i = 1
For Each intitulé In NomsColonnes
Sheets("Feuil2").Range("A" & fin).Offset(2, i - 1) = intitulé
i = i + 1
Next intitulé
For i = LBound(tablo, 1) To UBound(tablo, 1) 'pour chaque ligne du tablo
If UCase(tablo(i, col)) = UCase(Nom) Then 'si on est sur le bon nom
For j = LBound(tablo, 2) + 1 To UBound(tablo, 2) 'pour chaque colonne
If tablo(i, j) <> "" Then 's'il y a quelque chose
For Each intitulé In NomsColonnes
If tablo(1, j) = intitulé Then
k = Application.WorksheetFunction.Match(intitulé, NomsColonnes, 0)
Cells(Rows.Count, k).End(xlUp).Offset(1, 0) = tablo(i, j)
End If
Next intitulé
End If
Next j
End If
Next i
Next Nom
Application.ScreenUpdating = True
End Sub