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

  • Initiateur de la discussion Initiateur de la discussion bennp
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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 !!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
Retour