Problème avec macro trouver la dernière ligne vide

Résolu
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   -  
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai une macro pour insérer des valeurs dans mon tableau dans la colonne E (cellule E5) à partir de 2 InputBox qui servent à déterminer la première et dernière valeur.

Tous marchais très bien lorsque j'avais déjà des valeurs dans le tableau, mais quand il est vide, ça ne fonctionne pas. J'ai placé un espion pour connaître le résultats certaines valeurs de la macro et pour le résultat de dlig (dernière ligne) et le résultat est 1048577 et j'ai une erreur d'exécution 1004, "la méthode range de l'obget_global à échoué".

Voici mon code:

Sub ajoutSondage()

Dim ligne As Long
Dim nbrlig As Integer
Dim incr As Integer
Dim dlig As Long, premier As Long, dernier As Long

Application.ScreenUpdating = False

dlig = Range("E4").End(xlDown).Row + 1
premier = Application.InputBox("Numéro du premier sondage?", "DÉBUT", Type:=1)
    If premier = 0 Then
    MsgBox "Abandon utilisateur", vbExclamation
    Exit Sub
    End If
dernier = Application.InputBox("Numéro du dernier sondage?", "FIN", Type:=1)
    If dernier = 0 Then
    MsgBox "Abandon utilisateur", vbExclamation
    Exit Sub
    End If
nbrlig = dernier - premier - 1
incr = 1

    
If dernier < premier Then
    MsgBox "Décrémentation impossible", vbExclamation
    Exit Sub
Else
    Range("E" & dlig) = premier
    dlig = dlig + 1
        For ligne = dlig To dlig + nbrlig
         Range("E" & ligne) = Range("E" & ligne - 1) + incr
        Next
End If

Application.ScreenUpdating = True

End Sub


Qu'est-ce qui se passe?

Besoin d'aide!

Merci!

A voir également:

3 réponses

ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour Bassmart, bonjour le forum,

Peut-être comme ça (en partant d'en bas et en remontant) :

dlig = Cells(Application.Rows.Count, 5).End(xlUp).Rows + 1

0
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci thautheme!

Mais j'ai une erreur d'exécution 13, Incompatibilité de type avec cette ligne!
0
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1
 
Même problème avec une autre macro, elle fonctionne bien si il y a déjà des valeurs dans le tableau mais quand il n'y a pas ça fait tout planter.
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713
 
Tu as une erreur d'exécution parce que tu essaies d'écrire après la dernière ligne de la feuille (ligne n° 1048577 ).
Essaie : dlig = Columns("E").SpecialCells(xlCellTypeLastCell).Row + 1, pour récupérer la première ligne disponible.

--
0
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci thev pour la réponse!

Mais il me donne 0 comme résultat quand je place un espion sur dlig et il me donne une erreur d'exécution 1004.
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713 > bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention  
 
l'erreur d'exécution 1004 se produit à quelle ligne ?
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonsoir le fil, bonsoir le forum,

Il y a un S en trop dans le code proposé ! Désolé... Essaie avec :

dlig = Cells(Application.Rows.Count, 5).End(xlUp).Row + 1

Ça devrait marcher...
0
bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1
 
Merci thautheme!

Effectivement c'était bien le problème, ça fonctionne bine maintenant!

Encore merci pour votre aide!
0