Stockage dans un tableau - help! - VB/VBA/VBS - Programmation
Marsh Posté le 19-09-2007 à 08:15:58
Bonjour,
Juste à partir de ton code ...
ajoute au début
Dim MonTabRes(250) As Integer '250 à voir si ca suffit ...
'initialise ton tableau
For i=0 to 250
MonTabRes(i)=0
next
'Initialise la variable de ton tableau
j=0
'La ou tu as mis en vert - stoker les valeurs de i dans un tableau
MonTabRes(j)=i
j=j+1
'Pour reprendre les valeurs de ton tableau
avant la boucle
j=0
'a la place de ta boucle - For i = 2 To n + 1
Do while MonTabRes(j)>0
...
j=j+1
Loop
Ca devrait fonctionner.
Marsh Posté le 19-09-2007 à 13:21:22
Ok, ca marche nikel ! merci Paul
pour ce que ca interesse, j'ai rempacé aussi :
Range("C" & i, "D" & i).Select par Range("E" & MonTabRes(j), "F" & MonTabRes(j)).Select
et
Range("E" & i, "F" & i).Select par Range("E" & MonTabRes(j), "F" & MonTabRes(j)).Select
juste pour la culture est il possible de selectionner C D E F d'un coup au lieu de le faire en deux fois comme je l'ai fait? Car Range("C" & MonTabRes(j), "D" & MonTabRes(j), "E" & MonTabRes(j), "F" & MonTabRes(j)).Select ca marche pas..
Marsh Posté le 20-09-2007 à 13:31:16
oui parfait!
sinon tu connaiterais un tutorial sur les menus déroulants?
Est-ce possible qu'une macro se génère automatiquement a parti du choix que la personne a fait a partir du menu déroulant?
Car en fait la, je suis obligé de copier coller ma macro pour chaque groupe. Pour une utilisation ultérieur de ce programme et avec de nouveau groupes, ca pourrait etre pratique que toutes les macros se génèrent elles mêmes. J'ai tenté mais c'est pas évident..
Marsh Posté le 20-09-2007 à 15:20:40
Voir http://silkyroad.developpez.com/VBA/VisualBasicEditor/ paragraphe IV
Marsh Posté le 23-09-2007 à 09:39:32
Pour moi plutôt que de gérer un tableau statique, j'utiliserais un tableau dynamique.
Code :
|
Et au milieu de la boucle mettre qqch du style
Code :
|
Bon courage
Dream
Marsh Posté le 18-09-2007 à 19:26:49
bonjour, après de vagues notions de lycée...
j'ai tenté de faire une macro qui a pour but de reprendre des lignes (composés de 4 cases à chaque fois: Ci à Fi) de la Feuil1. Ensuite, est généré un nouvel onglet pour chacune de ces lignes. Seulement le problème c'est que lorsque les feuilles se génèrent, il faudrait que ma macro ne fasse qu'un groupe à la fois. Je m'explique:
La première partie (avec les if imbriqués) va compter combien de lignes ds mon gros tableau nous interesse (ici c'est le groupe "PP AV" qui sert d'exemple). En ressort un "n" avec ce nombre de lignes associé.
La deuxième partie génère les fiches. Seulement, je souhaiterais que la macro se souvienne des lignes ou il y avait ce groupe "PP AV". C'est pourquoi j'avais pensé stoker les valeurs de i dans un tableau puis appeler les valeurs du tableau. Seulement je ne sais pas faire ca... (voir mes notations en vert)
Je pense que vous allez trouver ma macro un peu lourd a lire mais bon, je débute ( ou presque)! J'aurais peut etre pas du faire les deux parties ensemble..Seulement, je ne n'ai pas réussi à rappeller une procédure dans une autre.
Merci si vous pouvez me filer un petit coup de main
Sub Genere_fiches_PP_AV()
Dim n As Integer
Dim i As Integer
n = 0
For i = 1 To 5000
If IsEmpty(Range("A" & i)) Then
n = n
Else
If Range("M" & i) = "PP AV" Then
n = n + 1 ' stoker les valeurs de i dans un tableau
Else
n = n
End If
End If
Next i
If MsgBox("il y aura " & n & " fiches PP AV. Voulez vous les générer?", _
vbQuestion + vbYesNo) = vbNo Then
GoTo LastLine
End If
For i = 2 To n + 1 'reprendre les valeurs de i
Sheets("Feuil1" ).Select
Range("C" & i, "D" & i).Select
Selection.Copy
Sheets("CREP" ).Select
Range("A5 : B5" ).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("Feuil1" ).Select
Range("E" & i, "F" & i).Select
Selection.Copy
Sheets("CREP" ).Select
Range("C5 : D5" ).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("CREP" ).Select
Application.CutCopyMode = False
Sheets("CREP" ).Copy After:=Sheets(2)
With ActiveCell.Characters(Start:=1, Length:=6).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 14
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
Sheets("CREP (2)" ).Select
Sheets("CREP (2)" ).Name = Range("A5" )
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next i
LastLine:
End Sub