XL 2019 Table de multiplication VBA

clemendo51

XLDnaute Nouveau
Bonjour je dois réaliser une table de multiplication en respectant plusieurs critère mais sa me dépasse complètement si vous avez des solutions je suis preneur

  • Réaliser le tableau de multiplication de 10×10 en utilisant des boucles (à vous de choisir combien de boucles) « for … next ».
  • Ajustez la dimension des cellules 11× 11carrées.
  • La couleur des chiffres de la première ligne et la première colonne est rouge.
  • La police de tous les chiffres est « Gras ».

1585819669356.png

Voici à quoi cela devra ressemblé
Merci de votre aide
 

Staple1600

XLDnaute Barbatruc
Re

merci pour la réponse
Une question: Est-ce que tu as vu en cours les Array (ou Tableau) ?
Si oui, tu devrais trouver (ou savoir) comment à partir de ce code (avec une boucle) remplir une range avec les valeurs stockées dans Tables
VB:
Sub Tables_Avec_Boucles()
Dim Tables(1 To 10, 1 To 10)
Dim i As Integer, j As Integer
For i = LBound(Tables, 1) To UBound(Tables, 1)
For j = LBound(Tables, 2) To UBound(Tables, 2)
Tables(i, j) = i * j
Next j
Next i
MsgBox Tables(5, 5), 64, "5x5=?"
MsgBox Tables(3, 4), 64, "3x4=?"
MsgBox Tables(4, 3), 64, "4x3=?"
MsgBox Tables(10, 10), 64, "10x10=?"
End Sub
 

clemendo51

XLDnaute Nouveau
Re

merci pour la réponse
Une question: Est-ce que tu as vu en cours les Array (ou Tableau) ?
Si oui, tu devrais trouver (ou savoir) comment à partir de ce code (avec une boucle) remplir une range avec les valeurs stockées dans Tables
VB:
Sub Tables_Avec_Boucles()
Dim Tables(1 To 10, 1 To 10)
Dim i As Integer, j As Integer
For i = LBound(Tables, 1) To UBound(Tables, 1)
For j = LBound(Tables, 2) To UBound(Tables, 2)
Tables(i, j) = i * j
Next j
Next i
MsgBox Tables(5, 5), 64, "5x5=?"
MsgBox Tables(3, 4), 64, "3x4=?"
MsgBox Tables(4, 3), 64, "4x3=?"
MsgBox Tables(10, 10), 64, "10x10=?"
End Sub
Je vais voir à sa
J'ai également se code la mais il m'indique une erreur erreur de compilation type défini par l'utilisateur non défini avec Sub tableMultiplication() surligner en jaune
Sub tableMultiplication()
Dim oTbl As Table
Dim iRow As Integer
Dim iCol As Integer

Set oTbl = ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=11, Numcolumns:=11)

For iRow = 1 To 10
For iCol = 1 To 10
oTbl.Cell(iRow + 1, iCol + 1).Range.Text = iRow * iCol

Next iCol
Next iRow
iRow = iCol = 0

For iRow = 1 To 10
oTbl.Columns(1).Cells(iRow + 1).Range.Text = iRow
Next iRow

For iCol = 1 To 10
oTbl.Rows(1).Cells(iCol + 1).Range.Text = iCol
Next iCol


Set oTbl = Nothing


End Sub
 

Staple1600

XLDnaute Barbatruc
Re

VB:
Sub tableMultiplication()
Dim oTbl As Table
Dim iRow As Integer
Dim iCol As Integer
Set oTbl = ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=11, Numcolumns:=11)
For iRow = 1 To 10
For iCol = 1 To 10
oTbl.Cell(iRow + 1, iCol + 1).Range.Text = iRow * iCol
Next iCol
Next iRow
iRow = iCol = 0
For iRow = 1 To 10
oTbl.Columns(1).Cells(iRow + 1).Range.Text = iRow
Next iRow
For iCol = 1 To 10
oTbl.Rows(1).Cells(iCol + 1).Range.Text = iCol
Next iCol
Set oTbl = Nothing
End Sub
(pas pour Excel)
Mais il est très facilement adaptable à Excel.
Tu vois comment faire ?
 

clemendo51

XLDnaute Nouveau
Re

VB:
Sub tableMultiplication()
Dim oTbl As Table
Dim iRow As Integer
Dim iCol As Integer
Set oTbl = ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=11, Numcolumns:=11)
For iRow = 1 To 10
For iCol = 1 To 10
oTbl.Cell(iRow + 1, iCol + 1).Range.Text = iRow * iCol
Next iCol
Next iRow
iRow = iCol = 0
For iRow = 1 To 10
oTbl.Columns(1).Cells(iRow + 1).Range.Text = iRow
Next iRow
For iCol = 1 To 10
oTbl.Rows(1).Cells(iCol + 1).Range.Text = iCol
Next iCol
Set oTbl = Nothing
End Sub
(pas pour Excel)
Mais il est très facilement adaptable à Excel.
Tu vois comment faire ?
Non j'avais même pas vu que c'étais pour world donc je te laisse deviner mon niveau ^^
 

Staple1600

XLDnaute Barbatruc
Re

>•clemendo51
Je viens de faire l'adaptation dans Excel.
Je te laisse essayer de le faire
(C'est toi qui en terminale, pas moi)
Je ne suis qu'en 1ère ;)

Tu as toutes les infos nécessaires dans cette discussion pour réussir l'adaptation.

Allez, il est l'heure de mouiller la chemise, camarade!
Comme on ne dirait pas chez moi:
[So schocking :eek:]
Faut se sortir les do*gts ;)
[/So schocking :eek:]
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Surtout pour vous saluer :) ,
Pour la coupe au carré, j'utiliserai ceci (encore du vieux recyclage):
VB:
Sub carré()
   Application.ScreenUpdating = False
   Columns(11).AutoFit: Rows(11).RowHeight = 0.5
   Do Until Rows(11).Height > Cells(11, 11).Width: Rows(11).RowHeight = Rows(11).RowHeight + 0.5: Loop
   Rows(1).Resize(11).RowHeight = Rows(11).RowHeight
   Columns(1).Resize(, 11).ColumnWidth = Columns(11).ColumnWidth
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Staple1600 :),

Pourquoi le 11?

Parce que la cellule Cells(11,11) contient le plus grand nombre de la table.
Donc un Autofit sur cette colonne 11 donnera la largeur minimale pour afficher entièrement chacune des données du tableau.
D'ailleurs c'est plus joli avec le Application.ScreenUpdating=True.
Bon, évidemment la proc. n'est pas optimisée. Je pourrais faire mieux :rolleyes:
 

clemendo51

XLDnaute Nouveau
Re

>•clemendo51
Je viens de faire l'adaptation dans Excel.
Je te laisse essayer de le faire
(C'est toi qui en terminale, pas moi)
Je ne suis qu'en 1ère ;)

Tu as toutes les infos nécessaires dans cette discussion pour réussir l'adaptation.

Allez, il est l'heure de mouiller la chemise, camarade!
Comme on ne dirait pas chez moi:
[So schocking :eek:]
Faut se sortir les do*gts ;)
[/So schocking :eek:]
J'ai essayé cela sa marche mais je ne sais pas lui dire qu'il doit commencé en (2,2)
il me la commence en a1
Sub exo_1()
Dim Num_ligne As Long
Dim Num_colonne As Long
For Num_ligne = 1 To 10
For Num_colonne = 1 To 10
Cells(Num_ligne, Num_colonne) = Num_ligne * Num_colonne
Next
Next
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Tu vois que c'était pas compliqué ;)
Voici donc mon adaptation de ta proc Word pour Excel
VB:
Sub tableMultiplication()
Dim oTbl As Range, iRow As Integer, iCol As Integer
Set oTbl = Range(Cells(1, 11), Cells(11, 11))
For iRow = 1 To 10
For iCol = 1 To 10
Cells(iRow + 1, iCol + 1) = iRow * iCol
Next iCol
Next iRow
iRow = iCol = 0
For iRow = 1 To 10
Columns(1).Cells(iRow + 1) = iRow
Columns(1).Cells(iRow + 1).Font.Color = vbRed
Columns(1).Cells(iRow + 1).Font.Bold = True
Next iRow
For iCol = 1 To 10
Cells(iCol + 1) = iCol
Cells(iCol + 1).Font.Color = vbRed
Cells(iCol + 1).Font.Bold = True
Next iCol
oTbl.CurrentRegion.Borders.Weight = 2
oTbl.CurrentRegion.Columns.AutoFit
Set oTbl = Nothing
End Sub
 

Discussions similaires

Réponses
4
Affichages
461

Statistiques des forums

Discussions
312 299
Messages
2 086 996
Membres
103 423
dernier inscrit
Guyom GIL