Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 commencer la macro à partir de la dernière ligne non vide

bennp

XLDnaute Occasionnel
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




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
 

pierrejean

XLDnaute Barbatruc
Bonjour bennp

Salut Staple
@bennp

Ajoute cette fonction dans le module
et bien sur efface la ligne fin=.....
Code:
Function fin()
fin = 0
dercol = Sheets("Feuil2").Cells(1, Columns.Count).End(xlToLeft).Column
For n = 1 To dercol
   If Sheets("Feuil2").Cells(Rows.Count, n).End(xlUp).Row > fin Then fin = Sheets("Feuil2").Cells(Rows.Count, n).End(xlUp).Row
Next
End Function
 

bennp

XLDnaute Occasionnel
ça n'a pas l'air de fonctionner, mon tableau n'est plus bon, vous pouvez regarder sur ce fichier excel svp ?
si on écrit quelque chose en A14, ça fonctionne mais ça ne fonctionne pas si on écrit en B14..
 

Pièces jointes

  • forum-excel.xlsm
    910.9 KB · Affichages: 15

bennp

XLDnaute Occasionnel
c'est parfait, et du coup si je souhaite sélectionner une cellule par défaut ? B14 par exemple ?
d'autre part, je souhaiterais continuer à importer d'autres infos, comment je dois m'y prendre, j'ai juste à ajouter du code ou je dois toujours me baser sur le départ, vous pouvez peut-etre essayer de créer 2 x le même tableau pour que je visualise dans le code comment faire pour continuer...
Merci de votre aide précieuse !!
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…