VBA Incrémentation automatique selon une variable

VBA Incrémentation automatique selon une variable - VB/VBA/VBS - Programmation

Marsh Posté le 21-07-2010 à 13:15:00    

Bonjour à tous amis programatteurs.
 
Voila je me casse la tête pour mettre au point un petit programme me permettant de :
 
copier coller une liste de valeur qui est variable. (j'ai déja trouvé le code)
 
Cependant selon la valeur il faut incrémenter un nombre de ligne qui peut-être variable.
 
 
Pour chaque valeur j'ai déja réussi à déterminé chaque nombre de lignes que je dois incrémenté mais je ne trouve pas comment définir la variable et l'écriture de l'incrémentation pour arriver à mes fins.
 
 
 
Exemple :
 
Tableau de départ :
       K     L
 
4      a      
5      b      
 
 
Après formule j'obtient ceci
       K     L(=nombre incrémentation)
 
4      a     2
5      b     1
6      c     0
 
 
 
 
Dans mon tableau de sorti je voudrais obtenir ceci :
 
       F
4     a  
5     a
6     a
7     b
8     b
9     c
 
 
Précision : la première valeur est déjà copier par mon programme, je cherche donc simplement à y intégrer l'incrémentation variable.
 
Je reste connecté pour tout autre information suceptibles de vous aider.
 
Je vous remercie par avance pour votre aide, car je dois vous avouez que je bloque totalement.
 
Cordialement

Reply

Marsh Posté le 21-07-2010 à 13:15:00   

Reply

Marsh Posté le 21-07-2010 à 13:19:37    

C'est pas très comprehensible ton truc :o
T'es sous Excel ?
 
Incrémentation ça veux dire rajouter 1 au contenu d'une variable.
Dans tes tableaux je ne comprend pas ou sont tes incrémentations...

Reply

Marsh Posté le 21-07-2010 à 13:54:53    

Je te remercie pour ta réponse.
 
Si tu regardes mes tableaux, tu verras que j'ai une liste abc que je dois copier dans un tableau de sortie.
 
Selon la lettre je dois incrémenter Xfois.
 
ainsi tu te retrouve avec aaabbc
a est collé 2 fois (en plus de la premiere copie), B 1 fois, et c 0 fois.
 
comme mon systeme de copiage se fait en descente de liste, je voudrais une incrémentation en descente
 
en gros ca te donne ca :
 
a est copié
Incrémentation x fois a
on passe a b
b est copié
incrémentation x fois de b
 
etc...
 
je dois le faire pour 3000 lignes :-s voila pk je voudrais utilisé une macro. Il me manque simplement la formule d'incrémentation avec la variable x
 
 
Cordialement
 

Reply

Marsh Posté le 21-07-2010 à 14:12:05    

Ok ok
n'utilise pas le mot incrémentation alors :D
 
en fait tu fait X insertions de ligne dans Excel. Ou X est le chiffre a coté de la lettre.
 
 
la technique pour insérer X ligne est la suivante
selectionner X lignes, et faire une insertion de ligne qui déplace tout les bloc vers le bas.
 
Exemple : Insérer 5 lignes (en déplaçant la ligne 7 vers la ligne 12)
 
ActiveWorkbook.Worksheets("Feuil1" ).Rows("7:11" ).Insert Shift:=xlDown
 
à toi d'adapter le truc :D
 
 
 
 

Reply

Marsh Posté le 21-07-2010 à 14:23:44    

Je test ça et je te dis ça ;-)
 
Merci pour l'aide

Reply

Marsh Posté le 21-07-2010 à 14:32:11    

Non en fait ça ne correspond pas à ce que j'execute, tout du moins je ne pense pas...
 
Mon programme me met 1 a, 1 b, 1 c
 
Tu fais une insertion quand tu as toute les valeurs, dans mon cas ces valeurs sont variable tout comme leur répétition.
 
Imaginons qu'on oubli ces répétitions.
 
dans mon tableau de sortie j'obtiendrais juste :
a
b
c
 
au niveau du fonctionnement ca donnerai ca (essai de faire sur un tableau excel cette manip, tu met une lettre dans une cellule et tu fais copie incrémentée bas)
 
 
 
 
 
Je te laisse un petit exemple de mon tableau de sortie
 
Etape 1
a
 
Etape 2
a
a
a
 
Etape 3
a
a
a
b
 
Etape 4
a
a
a
b
b
 
etape 5
a
a
a
b
b
c
 
 
 
 
Tu en penses quoi ?
 
Cordialement

Reply

Marsh Posté le 21-07-2010 à 14:46:03    

Dude Tagada a écrit :

Non en fait ça ne correspond pas à ce que j'execute, tout du moins je ne pense pas...
 
Mon programme me met 1 a, 1 b, 1 c
 
Tu fais une insertion quand tu as toute les valeurs, dans mon cas ces valeurs sont variable tout comme leur répétition.
 
Imaginons qu'on oubli ces répétitions.
 
dans mon tableau de sortie j'obtiendrais juste :
a
b
c
 
au niveau du fonctionnement ca donnerai ca (essai de faire sur un tableau excel cette manip, tu met une lettre dans une cellule et tu fais copie incrémentée bas)
 
 
 
 
 
Je te laisse un petit exemple de mon tableau de sortie
 
Etape 1
a
 
Etape 2
a
a
a
 
Etape 3
a
a
a
b
 
Etape 4
a
a
a
b
b
 
etape 5
a
a
a
b
b
c
 
 
 
 
Tu en penses quoi ?
 
Cordialement


 
au départ tu a bien le tableau avec les lettres, et a coté les chiffres non ?
 
bah en gros tu fait une boucle qui lit une ligne et insert autant de ligne après que le chiffre indiqué sur la ligne en cours non ?
 
 

Reply

Marsh Posté le 21-07-2010 à 14:54:14    

Non justement, au départ je n'ai qu'un tableau d'une colonne avec les lettres.
 
Pour faire apparaître les nombres j'utilise une rechercheV d'une pivot table que j'exporte manuellement (pour le moment)
 
 
Je te poste mon code pour faire la copie des valeurs, il faut juste insérer l'expression pour repeté la lettre... ce que je n'arrive pas à faire...
 
 
Sub incre2()
 
Dim FirstRow, LastRow, FirstColumn, LastColumn, TabWide, Tabheight As Integer
 
FirstRow = 4
FirstColumn = 11
     
 
LastColumn = FirstColumn
 
Dim rowout As Integer
rowout = 4
Dim C As Integer
C = FirstColumn
 
'For N-1
Tabheight = Sheets(1).Cells(FirstRow, FirstColumn).End(xlDown).Row
TabWide = Sheets(1).Cells(FirstRow, FirstColumn).CurrentRegion.Columns.Count
Dim SelectedRows As Integer
For SelectedRows = FirstRow To Tabheight
 
Sheets(1).Cells(rowout, 6).Value = Sheets(1).Cells(SelectedRows, C).Value
 
(A MON SENS IL FAUT INSERER A CET ENDROIT)
 
rowout = rowout + 1
Next SelectedRows
 
 
 
End Sub

Reply

Marsh Posté le 21-07-2010 à 14:56:30    

J'ajoute quelque infos :
 
Les valeurs apparâissent à la ligne 4
Les titre en 3
 
le tableau de sorti va de F à I
Le tableau de donné est en K
Le nombre de répétition de la lettre obtenu par la fonction Recherche V en L

Reply

Marsh Posté le 22-07-2010 à 10:33:01    

Je continue de chercher mais je ne trouve pas...

Reply

Marsh Posté le 22-07-2010 à 10:33:01   

Reply

Marsh Posté le 26-07-2010 à 12:56:09    

J'ai trouvé la solution c'était tout bête
 
 
Sub incre2()
 
Dim FirstRow, LastRow, FirstColumn, LastColumn, TabWide, Tabheight As Integer
 
FirstRow = 4
FirstColumn = 11
     
 
LastColumn = FirstColumn
 
Dim rowout As Integer
rowout = 4
Dim C As Integer
C = FirstColumn
 
'For N-1
Tabheight = Sheets(1).Cells(FirstRow, FirstColumn).End(xlDown).Row
TabWide = Sheets(1).Cells(FirstRow, FirstColumn).CurrentRegion.Columns.Count
Dim SelectedRows As Integer
For SelectedRows = FirstRow To Tabheight
 
Sheets(1).Cells(rowout, 6).Value = Sheets(1).Cells(SelectedRows, C).Value
 
X = Sheets(1).Cells(SelectedRows, 12).Value
 
If X > 1 Then Sheets(1).Cells(rowout, 6).Resize(1).AutoFill Destination:=Sheets(1).Cells(rowout, 6).Resize(X), Type:=xlFillDefault
    Sheets(1).Cells(rowout, 6).Resize(X).FillDown
 
If X = 1 Then Sheets(1).Cells(rowout, 6).Value = Sheets(1).Cells(SelectedRows, C).Value
 
rowout = rowout + X
 
 
Next SelectedRows

Reply

Marsh Posté le 26-07-2010 à 16:38:40    

Dude Tagada a écrit :

Bonjour à tous amis programatteurs.


 
J'adore...  :love:


---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed