Tableau automatique
Bonjour tout le monde,
je cherche à faire une manip qui à l'air simple mais je me casse la tête dessus depuis plusieurs jours, Excel n'étant pas ma spécialité...
j'aimerai à partir de deux variables Nmin et Nmax (que j'arrive déjà à lire avec VBA) que ma routine me créé un tableau tel que:
par exemple si Nmin vaut -7 et Nmax vaut 7, j'aimerai obtenir
La case A1 est vide
1ère ligne (à partir de B1->P1) -7, -6, -5, -4, ........ 6, 7.
de même sur la 1ère colonne (A2 ->A16)
7
6
5
- 6
- 7
De façon à réaliser une sorte d'axe 2D (x,y) auquel ensuite j'aimerai étandre une formule à toutes les cases du tableau ainsi créé (B3:P16).
par exemple si la formule est X*Y, le résultat serait
- 7*7=-49
- 6*7=-42 et ainsi de suite.
Si quelqu'un a une idée pour m'aider à réaliser cette routine.
Merci d'avance de votre aide et du partage de votre expérience.
Pierre
Bonjour et bienvenue sur le forum pierre,
Essaie ce code (à mettre dans un module standard) :
Sub TablAuto()
'macro par vba-new pour pierre31 le 08/07/09
'http://forum.excel-pratique.com/viewtopic.php?t=12286
Dim Nmin As Integer
Dim Nmax As Integer
Dim i As Integer
Dim j As Integer
Range("A1:IV65536").ClearContents
Nmin = InputBox("Veuillez saisire la valeur de Nmin")
Nmax = InputBox("Veuillez saisire la valeur de Nmax")
i = 2
j = Nmax
Do While Nmin <= j
Cells(1, i) = Nmin
Cells(i, 1) = Nmax
Nmin = Nmin + 1
Nmax = Nmax - 1
i = i + 1
Loop
End Sub
merci vba-new !
ta macro marche bien
j'ai réussi à faire la même chose avec ce code :
Sub mac()
nummin = Worksheets("Feuil1").Range("B1").Value
nummax = Worksheets("Feuil1").Range("B2").Value
inc = Worksheets("Feuil1").Range("B3").Value
N_1 = nummax
N = nummin
N1 = nummax
Worksheets("Feuil2").Range("A1").Select
While (N <= N_1)
DoEvents
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = N
N = N + 1
Wend
Worksheets("Feuil2").Range("A1").Select
While (N1 >= nummin)
DoEvents
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = N1
N1 = N1 - 1
Wend
End Sub
Mon soucis est que si je ne suis pas sur la feuille n°2, j'ai un message d'erreur qd je lance la macro.
Chose qui n'apparait pas sur ta version...
Aurais tu une idée d'où ça paut venir?
c'est bon je n'ai plus le problème de la feuille, j'ai simplement selectionné la feuille puis la case ensuite:
[Sub mac()
nummin = Worksheets("Feuil1").Range("B1").Value
nummax = Worksheets("Feuil1").Range("B2").Value
inc = Worksheets("Feuil1").Range("B3").Value
N = nummin
N1 = nummax
[b]Worksheets("Feuil2").Select
Worksheets("Feuil2").Range("A1").Select[/b]
While (N <= nummax)
DoEvents
ActiveCell.Offset(0, 1).Select
ActiveCell.Value = N
N = N + 1
Wend
Worksheets("Feuil2").Range("A1").Select
While (N1 >= nummin)
DoEvents
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = N1
N1 = N1 - 1
Wend
End Sub]
Par contre si quelqu'un a une idée sur comment étendre une formule à la taille du tableau créé ça m'interresse...
par exemple, faire une table de multiplication[/code]
Bonjour,
un essai :
Sub tableau()
Dim NumMin As Integer, NumMax As Integer
Dim I As Integer, J As Integer
With Sheets("Feuil1")
NumMin = .Range("B1").Value
NumMax = .Range("B2").Value
End With
J = 2
With Sheets("Feuil2")
.Cells.ClearContents
For I = NumMin To NumMax
.Cells(1, J) = I
.Cells(J, 1) = I
J = J + 1
Next I
.Range("A2:A" & J - 1).Sort Key1:=.Range("A2"), Order1:=xlDescending, Header:=xlNo
.Range(.Cells(2, 2), .Cells(J - 1, J - 1)).FormulaR1C1 = "=R1C*RC1"
End With
End Sub
super ça marche!
par contre quand je complique ma formule qui fait appel à d'autres valeur présentes sur le fichier excel, il me sort comme résultat : #NOM?
il faut que je double clique sur la case puis Entrée et il me sort le bon résultat, qu'est ce que je peux faire pour palier ce problème?