Table de multiplication

Bonjour à tous,

je dois rédiger un programme qui permet d’afficher des tables de multiplications. L’utilisateur indique dans la cellule C2, le nombre à utiliser pour obtenir la table de multiplications à afficher. Il doit saisir un nombre entier compris entre -100 et 100. Le bouton « Calculer », permet d’afficher la table de multiplication. Le bouton « Effacer » permet d’effacer la table de multiplication.

Cependant, lorsque je mets des nombres négatifs en C2 afin d'obtenir leurs table de multiplication, rien ne s'affiche, quelqu'un pour me corriger cela svp?

Bonne soirée à vous.

bonsoir

euh , tout bête sans vb en E2

= C2* ligne(1:100)

merci pour votre réponse, cependant il me faut du code VBA

Salut Nono,
Salut Tulipe_4,

Sub CalculerTableMultiplication()
'
Dim valeur%, i%
'
valeur = Range("C2").Value
If Not IsNumeric(valeur) Or valeur < -100 Or valeur > 100 Or Int(valeur) <> valeur Then _
    MsgBox "Vous devez fournir un nombre entier compris entre -100 et 100 !", vbCritical + vbOKOnly, "Erreur": _
    Exit Sub
'
For i = 1 To 10
    Cells(4 + i, 2).Resize(1, 3) = Array(i & " X " & valeur, "=", valeur * i)
Next
MsgBox "Table de multiplication calculée avec succès !", vbInformatio + vbOKOnly, "Succès"
'
End Sub

A+

Salut Curulis, merci de ta réponse cependant la table va seulement jusqu'à x10, j'aimerais qu'elle s'execute jusqu'au nombre pré défini ( exemple si je prends 30 : de 30 x 0 jusqu'a 30 x 30 ). Si tu peux rectifier ça serait top !

Salut Nono,

je n'avais pas compris ton premier souci de non-affichage des tables avec un multiplicateur négatif.
Quand tu as besoin qu'un nombre négatif se comporte comme un positif, tu dois faire comme ceci

For i = 1 To Abs(valeur)

La valeur absolue d'un nombre est sa valeur non signée.

J'ai arrangé ton code pour plus de confort et, si tu le souhaites, on peut très bien faire la même chose sans boutons!

A+

14nono-multi.xlsm (21.24 Ko)

Bonsoir à tous ,

Pour le "fun", une version uniquement pour O365 :

  • Indiquez simplement la valeur du multiplicateur dans la cellule B1 (l'adresse B1 est modifiable dans le code - voir la constante Mult)
  • Le résultat est mis sur la feuille à partir de cellule D1 (l'adresse D1 est modifiable dans le code - voir la constante Dest)
  • La cellule B1 dispose d'une liste de validation qui limite les saisies à l'intervalle [-100 , 100]
  • le code est dans le module de la feuille "Exercice 2"

Le code :

Const Mult = "B1"    ' la cellule du multiplicateur
Const Dest = "D1"    ' la cellule de destination

Private Sub Worksheet_Change(ByVal Target As Range)   '----- Pour O365
Dim formule$
   formule = "=SEQUENCE(ABS(nnnn)) & "" x "" & TEXT(nnnn,""0;(-0);0"") & "" = "" & TEXT(SEQUENCE(ABS(nnnn))* nnnn,""# ##0"")"
   If Intersect(Range(Mult), Target) Is Nothing Then Exit Sub
   Application.ScreenUpdating = False
   With Range(Dest)
      On Error GoTo FIN
      Application.EnableEvents = False
      .Resize(Rows.Count - .Row + 1).ClearContents
      If Range(Mult) = "" Then GoTo FIN
      If Range(Mult) = 0 Then .Value = "quelque soit N, N x 0 = 0": GoTo FIN
      .Formula2 = Replace(formule, "nnnn", Mult)
      .Resize(Abs(Range(Mult))) = .Resize(Abs(Range(Mult))).Value
   End With
FIN:
   Range(Dest).EntireColumn.AutoFit
   Application.EnableEvents = True
   Application.ScreenUpdating = False
End Sub

Re,

Avec très peu de modifications du précédent code, voici une version qui fonctionne pour toutes les versions d'Excel (toujours avec le même principe) :

Const Mult = "B1"    ' la cellule du multiplicateur
Const Dest = "D1"    ' la cellule de destination

Private Sub Worksheet_Change(ByVal Target As Range)   '----- Pour toutes les versions d'Excel
Dim formule$
   formule = "=ROW(A1) & "" x "" & TEXT(nnnn,""# ##0;(-# ##0)"") & "" = "" & TEXT(nnnn * ROW(A1),""# ##0"")"
   If Intersect(Range(Mult), Target) Is Nothing Then Exit Sub
   Application.ScreenUpdating = False
   With Range(Dest)
      On Error GoTo FIN
      Application.EnableEvents = False
      .Resize(Rows.Count - .Row + 1).ClearContents
      If Range(Mult) = "" Then GoTo FIN
      If Range(Mult) = 0 Then .Value = "quelque soit N, N x 0 = 0": GoTo FIN
      .Resize(Abs(Range(Mult))).Formula = Replace(formule, "nnnn", Range(Mult))
      .Resize(Abs(Range(Mult))) = .Resize(Abs(Range(Mult))).Value
   End With
FIN:
   Range(Dest).EntireColumn.AutoFit
   Application.EnableEvents = True
   Application.ScreenUpdating = False
End Sub

Salut Nono,
Salut les as,

on pousse l'exercice, Nono ? Sans boutons !

A+

19nono-multi.xlsm (19.53 Ko)

Merci beaucoup pour votre aide !

Salut Nono,
Salut les as,

on pousse l'exercice, Nono ? Sans boutons !

A+

19nono-multi.xlsm (19.53 Ko)

bonne acné

Rechercher des sujets similaires à "table multiplication"