XL 2010 incrémenter une série numérique

issamien

XLDnaute Nouveau
Bonjour la communauté,

Je veux incrémenter une série à partir d'un numéro que j'introduis dans un textbox1 jusqu'à atteindre le nombre que je souhaite, par exemple
j'introduis le code de début 1000 et une quantité 50 que j'introduis dans un textbox2, je dois obtenir
1000
1001
1002
...
1049
j'ai essayé ce code

Private Sub CommandButton6_Click()
On Error Resume Next
With Sheets("inventaire de base").Activate
Range("E1048576").Select
Selection.End(xlUp).Select
Selection.Offset(1, 0).Select
.Value = Val(txtQuantite)
.Resize(Txtcodededebut).DataSeries
.Offset(Txtcodededebut).Resize(Rows.Count - Txtcodededebut - .Row + 1).ClearContents 'RAZ dessous
End With
End Sub
Je ne sais pas elle est ou l'erreur.
 

Staple1600

XLDnaute Barbatruc
Re

Non, moi je suis juste poli ;)
Je disais bonjour à mapomme

D'autant plus que:
"Une pomme chaque matin, éloigne le médecin"
;)

PS: Je t'avais dit Bonjour à toi dans autre fil ;)

issamien
Tu reviens dans ton fil quand tu veux, parce que là on est en train de digresser ;)
 

issamien

XLDnaute Nouveau
Re

Non, moi je suis juste poli ;)
Je disais bonjour à mapomme

D'autant plus que:
"Une pomme chaque matin, éloigne le médecin"
;)

PS: Je t'avais dit Bonjour à toi dans autre fil ;)

issamien
Tu reviens dans ton fil quand tu veux, parce que là on est en train de digresser ;)
Bonjour à tous (mapomme, joujou et staple6000 hhh)
j'ai réussie à faire le code qui me permet d'incrémenter la série, mais là je suis dans une nouvelle problématique hhh,
Voici le code que j'ai fait

Private Sub CommandButton6_Click()

On Error Resume Next
With Sheets("inventaire de base").Range("E1048576").End(xlUp).Offset(1, 0)
.Value = val(Txtcodededebut)
.Resize(txtQuantite).DataSeries
.Offset(txtQuantite).Resize(Rows.Count - txtQuantite - .Row + 1).ClearContents 'RAZ dessous
End With

Dim lastrow As Integer
Dim valeur As Integer
'renvoie le numéro de la dernière ligne non vide
lastrow = Cells(Rows.Count, 5).End(xlUp).Row
'boucle de la ligne jusq'à la dernière cell non vide
For valeur = Range("A1048576").End(xlUp).Offset(1, 0) To lastrow
Cells(valeur, 1) = Combobatiment.Text
Next valeur
End Sub


PS: voir le fichier pour bien comprendre ma situation

Merci les amis vous êtes top
 

Pièces jointes

  • test vba.xlsx
    10.3 KB · Affichages: 4

Staple1600

XLDnaute Barbatruc
Re,

C'est bien embêtant cela ;)
Parce que ton dernier code (et les précédents) indique clairement que ton classeur contient un Userform
exemple:
Txtcodededebut =>nom d'un TextBox
CommandButton6_Click => nom d'un CommanButton
etc...
VB:
Private Sub CommandButton6_Click()

On Error Resume Next
With Sheets("inventaire de base").Range("E1048576").End(xlUp).Offset(1, 0)
.Value = val(Txtcodededebut)
.Resize(txtQuantite).DataSeries
.Offset(txtQuantite).Resize(Rows.Count - txtQuantite - .Row + 1).ClearContents 'RAZ dessous
End With

Dim lastrow As Integer
Dim valeur As Integer
'renvoie le numéro de la dernière ligne non vide
lastrow = Cells(Rows.Count, 5).End(xlUp).Row
'boucle de la ligne jusq'à la dernière cell non vide
For valeur = Range("A1048576").End(xlUp).Offset(1, 0) To lastrow
Cells(valeur, 1) = Combobatiment.Text
Next valeur
End Sub
Donc un classeur avec l'userform et le code VBA existant, ce serait mieux pour tester, non ?
 
Dernière édition:

issamien

XLDnaute Nouveau
Re,

C'est bien embêtant cela ;)
Parce que ton dernier code (et les précédents) indique clairement que ton classeur contient un Userform
exemple:
Txtcodededebut =>nom d'un TextBox
CommandButton6_Click => nom d'un CommanButton
etc...
VB:
Private Sub CommandButton6_Click()

On Error Resume Next
With Sheets("inventaire de base").Range("E1048576").End(xlUp).Offset(1, 0)
.Value = val(Txtcodededebut)
.Resize(txtQuantite).DataSeries
.Offset(txtQuantite).Resize(Rows.Count - txtQuantite - .Row + 1).ClearContents 'RAZ dessous
End With

Dim lastrow As Integer
Dim valeur As Integer
'renvoie le numéro de la dernière ligne non vide
lastrow = Cells(Rows.Count, 5).End(xlUp).Row
'boucle de la ligne jusq'à la dernière cell non vide
For valeur = Range("A1048576").End(xlUp).Offset(1, 0) To lastrow
Cells(valeur, 1) = Combobatiment.Text
Next valeur
End Sub
Donc un classeur avec l'userform et le code VBA existant, ce serait mieux pour tester, non ?

Re

Le voilà mon fichier avec lequel je travail,

tu es formidable mon ami
 

Pièces jointes

  • Test VBA pour inventaire.xlsm
    38 KB · Affichages: 5

Staple1600

XLDnaute Barbatruc
Re

issamien
Je ne suis pas dans ta tête, donc pas sûr d'avoir tout compris
Si tu testes ce code en lieu et place de ton code pour le bouton [Inventaire d'une série]
VB:
Private Sub CommandButton6_Click()
Dim valeur&, vArr
On Error Resume Next
vArr = _
      Array(Combobatiment, Comboniveau, Txtcodelieu, Txtdesignlieu, vbNullString, Txtbien, Txtmarque, _
      Txtmodele, Txtdimension, Txtcappuiss, Txtnumserie, Txtobservat, ComboConsultant)
'renvoie le numéro de la dernière ligne non vide
valeur = Cells(Rows.Count, 5).End(xlUp).Row
Cells(valeur, 1)(2).Resize(txtQuantite * 1, 13) = vArr
Erase vArr
With Sheets("inventaire de base").Cells(valeur, "E")(2)
  .Value = val(Txtcodededebut)
  .Resize(txtQuantite).DataSeries
  .Offset(txtQuantite).Resize(Rows.Count - txtQuantite - .Row + 1).ClearContents 'RAZ dessous
End With
End Sub
Je me rapproche de la cible ou pas?
 

issamien

XLDnaute Nouveau
Re

issamien
Je ne suis pas dans ta tête, donc pas sûr d'avoir tout compris
Si tu testes ce code en lieu et place de ton code pour le bouton [Inventaire d'une série]
VB:
Private Sub CommandButton6_Click()
Dim valeur&, vArr
On Error Resume Next
vArr = _
      Array(Combobatiment, Comboniveau, Txtcodelieu, Txtdesignlieu, vbNullString, Txtbien, Txtmarque, _
      Txtmodele, Txtdimension, Txtcappuiss, Txtnumserie, Txtobservat, ComboConsultant)
'renvoie le numéro de la dernière ligne non vide
valeur = Cells(Rows.Count, 5).End(xlUp).Row
Cells(valeur, 1)(2).Resize(txtQuantite * 1, 13) = vArr
Erase vArr
With Sheets("inventaire de base").Cells(valeur, "E")(2)
  .Value = val(Txtcodededebut)
  .Resize(txtQuantite).DataSeries
  .Offset(txtQuantite).Resize(Rows.Count - txtQuantite - .Row + 1).ClearContents 'RAZ dessous
End With
End Sub
Je me rapproche de la cible ou pas?
dsl vraiment,

Je pense que tu essaie tjrs de me trouver une solution concenrant la première partie de mon programme (incrémenter la suite txtcodededebut) je l'ai réglé et ça marche bien, le problème qui me bloque c'est la deuxième partie du prgramme celle la:

Dim lastrow As Integer
Dim valeur As Integer
'renvoie le numéro de la dernière ligne non vide
lastrow = Cells(Rows.Count, 5).End(xlUp).Row
'boucle de la ligne jusq'à la dernière cell non vide
For valeur = Range("A1048576").End(xlUp).Offset(1, 0) To lastrow
Cells(valeur, 1) = Combobatiment.Text
Next valeur
End Sub

je cherche la dernière cellule non vide dans la colonne A en partant du bas vers le haut (xlup) je décale vers le bas (offset(1,0)) et je copie combobatiment à partir de cette cellule jusqu'a la dernière remplie dans la colonne E (lastrow)

Le problème c'est que ça commence de la cellule A1 toujours ( et ça termien là où je veux qu'il termine, donc le problème je crois se trouve dans la boucle "for next" (j'ai essayé de mettre for valeur = [A1048576].End(xlUp).Offset(1,0) to lastrow mais le même problème.

Merci
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

issamien
Je te demandais de tester le code de ma macro
(c'est à dire supprimant (ou en commentant) ta macro actuelle qui se nomme Private Sub CommandButton6_Click()
Je voudrais donc savoir si ma macro fait la même chose que ta macro.
Il faut donc la tester sans la modifier.
Tu sélectionnes ta macro dans ton classeur et tu appuies sur SUPPR
Ensuite tu copies/colles la macro du message#24 dans ton classeur
Puis tu affiches l'userform et tu cliques sur le bouton [Inventaire d'une série]

Merci de bien vouloir faire le test sur ton PC, et de me redire le résultat.
 

issamien

XLDnaute Nouveau
Bonsoir le fil

issamien
Je te demandais de tester le code de ma macro
(c'est à dire supprimant (ou en commentant) ta macro actuelle qui se nomme Private Sub CommandButton6_Click()
Je voudrais donc savoir si ma macro fait la même chose que ta macro.
Il faut donc la tester sans la modifier.
Tu sélectionnes ta macro dans ton classeur et tu appuies sur SUPPR
Ensuite tu copies/colles la macro du message#24 dans ton classeur
Puis tu affiches l'userform et tu cliques sur le bouton [Inventaire d'une série]

Merci de bien vouloir faire le test sur ton PC, et de me redire le résultat.
Rebonjour Staple6000

je l'ai testé et ça fonctionne hyper bien, j'ai presque finalisé le programme, j'ai mis un code qui permet de vérifier l'existence des doublons sur le textbox (code bien).

Merci mon ami

PS: si tu veux que je t'envoie la version finale de mon code et tu vérifie si il y a des améliorations à faire je serai reconnaissant
 

Statistiques des forums

Discussions
311 725
Messages
2 081 942
Membres
101 849
dernier inscrit
florentMIG