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

Résolu/Fermé
bassmart
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
- 17 mars 2015 à 14:52
bassmart
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
- 7 avril 2015 à 13:53
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

pijaku
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 700
Modifié par pijaku le 17/03/2015 à 15:21
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
bassmart
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
1
17 mars 2015 à 18:42
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
pijaku
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 700 > bassmart
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021

17 mars 2015 à 19:45
et dernier?
si vide ou inférieur à premier???
0
bassmart
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
1 > pijaku
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021

17 mars 2015 à 22:24
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
pijaku
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021
2 700 > bassmart
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021

18 mars 2015 à 07:46
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
bassmart
Messages postés
270
Date d'inscription
jeudi 19 février 2015
Statut
Membre
Dernière intervention
12 avril 2021
1 > pijaku
Messages postés
12257
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
3 septembre 2021

27 mars 2015 à 18:43
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