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?

Rechercher des sujets similaires à "tableau automatique"