VBA extraction de données

Bonjour,

Afin d'extraire des données de ma feuille principale pour les mettre dan une autre feuille qui me permet d'envoyer ensuite par SMS les données, j'ai la macro suivante :

Sub miseenpage()
Worksheets("SMS").Cells.Clear
I = 13
j = 1
While (Sheets("Heures").Cells(I, 1)) <> "" And (Sheets("Heures").Cells(I, 1)) <> "(vide)"
    mat = Application.VLookup(Sheets("Heures").Cells(I, 3), Sheets("LISTE CONSOLIDÉE").Range("A2:J250"), 10, False)

    Worksheets("SMS").Cells(j, 1) = Sheets("Heures").Cells(I, 3)
    Worksheets("SMS").Cells(j, 2) = Sheets("Heures").Cells(I, 31)
    Worksheets("SMS").Cells(j, 3) = Sheets("Heures").Cells(I, 32)
    Worksheets("SMS").Cells(j, 4) = mat
    I = I + 1
    j = j + 1
    Columns("B:B").Select
    Selection.NumberFormat = "0.00%"
    Columns("C:C").Select
    Selection.NumberFormat = "h:mm;@"

Wend

MsgBox ("Vous pouvez lancer l'envoi")
End Sub

Mon problème c'est que les données que j'extrais depuis mon tableau sur ma feuille "Heures" comportent parfois des lignes vides, et la macro s'arrête d'extraire dès qu'il y a une ligne vide.

Quelle serait une solution pour que la commande saute la ou les lignes vides si la colonne comporte encore des cellules avec des données ?

While (Sheets("Heures").Cells(I, 1)) <> "" And (Sheets("Heures").Cells(I, 1)) <> "(vide)"

Merci d'avance. Je n'ai pas mis mon fichier car trop lourd et que des données personnelles.

Bonjour Nickal

Il faut parcourir le tableau avec une boucle de type For Ligne = 2 to DernièreLigne ..... Next

En recherchant le numéro de la dernière ligne

DernièreLigne = Sheets("Heures").Range("A" & Rows.count).End(XlUp).Row

A+

Merci Bruno, je vais essayer d'adapter.

Bonjour Bruno,

Je n'ai pas réussi à adapter les lignes de commandes. Par contre je fais un tri de Z à A et ça règle mon problème.

Bonne journée.

Rechercher des sujets similaires à "vba extraction donnees"