VBA Incrémentation automatique selon une variable - VB/VBA/VBS - Programmation
Marsh Posté le 21-07-2010 à 13:19:37
C'est pas très comprehensible ton truc
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...
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
Marsh Posté le 21-07-2010 à 14:12:05
Ok ok
n'utilise pas le mot incrémentation alors
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
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
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... |
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 ?
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
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
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
Marsh Posté le 26-07-2010 à 16:38:40
Dude Tagada a écrit : Bonjour à tous amis programatteurs. |
J'adore...
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