Incrémenter une série de valeur dans une colonne

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,

Dans ma feuille, j'ai commencé à créer une macro pour incrémenter des valeurs à partir d'un Inputbox dans la colonne E.

Ce que je veux , c'est que je demande à l'usager la valeur de départ et de fin à l'aide d'un InputBox, je détecte la dernière cellule vide de ma colonne E à partir de la ligne 5. Ensuite je veux, qu'il place la première valeur dans la première ligne vide de ma colonne E et qu'il incrémente à partir de ma première valeur jusqu'à la dernière valeur déterminé avec l'InputBox.

J'ai fait quelques essais pour faire la boucle mais sans succès!(For, For each)

Voici la première partie de mon code:

Sub ajoutSondage()

Dim ligne As Object
Dim Deb As Integer, Fin As Integer, x As Integer, nbrlig As Integer
Dim incr As Integer
Dim dlig As Long, premier As Long, dernier As Long

dlig = Range("E5").End(xlDown).Row

premier = Application.InputBox("Numéro du premier sondage?", "DÉBUT")
dernier = Application.InputBox("Numéro du dernier sondage?", "FIN")
Deb = dlig + 1
nbrlig = dernier - premier
Fin = Deb + nbrlig
incr = 1

'For ligne = 1 To nbrlig
    'Range("E5:E" & Deb) = premier
'Next

End Sub

Merci pour votre aide!

1 réponse

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour
    en reprenant et épurant un peu ton 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
    
    dlig = Range("E5").End(xlDown).Row + 1
    premier = Application.InputBox("Numéro du premier sondage?", "DÉBUT")
    dernier = Application.InputBox("Numéro du dernier sondage?", "FIN")
    nbrlig = dernier - premier - 1
    incr = 1
    
    Range("E" & dlig) = premier
    dlig = dlig + 1
    For ligne = dlig To dlig + nbrlig
        Range("E" & ligne) = Range("E" & ligne - 1) + incr
    Next
    End Sub


    Attention : ajouter des tests si inputbox vides...

    🎼 Cordialement,
    Franck 🎶
    0
    1. bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1
       
      Merci pijaku!

      Ça fonctionne!

      J'ai ajouté, comme le mentionne, un test sur le résultat de l'InputBox.

      Voici mon nouveau 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("E5").End(xlDown).Row + 1
      premier = Application.InputBox("Numéro du premier sondage?", "DÉBUT")
      dernier = Application.InputBox("Numéro du dernier sondage?", "FIN")
      nbrlig = dernier - premier - 1
      incr = 1
      
      If premier = False Then
          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
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention  
       
      et dernier?
      si vide ou inférieur à premier???
      0
    3. bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1 > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Bonjour pijaku!

      C'est bizarre, mon code ne me cause pas problème!

      Mais, si j'entre rien dans le premier InputBox, il continue avec le deuxième InputBox pareil, alors qu'il devrait sortir de la macro et si j'entre rien dans le deuxième InputBox, là il semble sortir de la macro.

      Je n'y comprend rien!!
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773 > bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour,

      Chez moi, il sort de la procédure...
      Si tu entres des valeurs numériques, je te conseille de préciser le type de l'application.inputbox comme décrit ICI.
      J'ai ajouté deux tests, regarde ce nouveau code et dis moi...
      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("E5").End(xlDown).Row + 1
      premier = Application.InputBox("Numéro du premier sondage?", "DÉBUT", Type:=1)
      dernier = Application.InputBox("Numéro du dernier sondage?", "FIN", Type:=1)
      nbrlig = dernier - premier - 1
      incr = 1
      
      If premier = 0 And dernier = 0 Then
          MsgBox "Abandon utilisateur."
          Exit Sub
      ElseIf dernier < premier Then
          MsgBox "Décrémentation impossible"
          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
      
      0
    5. bassmart Messages postés 281 Date d'inscription   Statut Membre Dernière intervention   1 > pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Bonjour pijaku!

      Merci pour ta réponse, est-ce qu'il doit sortir si j'appui sur annuler dans le premier InputBox?

      Parce que si oui, il ne le fait pas!

      Merci!
      0