Macro Tableau avec diagonale différente

Bonjour,

je viens solliciter votre aide.
Je dois créer une macro tableau avec sur la diagonale un mot
J'ai 4 cellules:
A1 : 4 --> qui représente le nombre de lignes
B1 : 4 --> qui représente le nombre de colonnes
C1 : 4 --> qui représente le "mot"
D1 : 4 --> endroit où commence le tableau

Le tableau doit être rempli de 1 à 12 sauf dans la diagonale oû là il doit y avoir le mot en question.

lien du fichier : https://www.cjoint.com/c/CCxoDDJvFgN

JE dois absolument créer cela à l'aide d'une macro.

MErci d'anvace pour votre aide.

1 réponse

  1. Contributeur
    Bonjour,

    Ca sent trop le devoir à faire ça, ce qu'on ne fait pas ici...
    Démarre, et si tu as une question précise sur excel on essaiera d'y répondre.

    eric
    1. Je reconnaît que c'est pour un devoir.
      J'ai commencé la macro avec le cour que j'ai reçu
      mais je n'arrive pas à remplir le tableau
      pouvez vous m'aider
      voici le code que j'ai écrit:
      Sub Macro_Partiel()
      '
      ' Macro1 Macro
      '
      Dim ligne As String
      Dim colonne As String
      Dim mot As String
      Dim debut As String

      ligne = Range("A1") 'Nombre de lignes
      colonne = Range("B1") 'Nombre de colonnes
      mot = Range("C1") 'Mot dans la diagonale
      debut = Range("D1") 'Point de départ du tableau

      Range("D1").Activate

      For i = 1 To A1 * B1

      If i = (ligne * colonne) / ligne Then
      ActiveCell.Offset(0, B1).Range("A1").Select
      End If

      Next

      End Sub
    2. Contributeur
      Bonjour,

      Bon début.
      Sauf que typer ligne et colonne en As Long serait mieux vu que ce sont des nombres entiers.
      Et vu que c'est le nombre appelle-les plutôt nbLigne et nbColonne

      Essaie plutôt en faisant 2 boucles imbriquées, et à l'intérieur teste si ligne=colonne.
      For lig = 0 to ... 
        For col = 0 to .. 
            if lig=col then 
                ... 
            else 
                ... 
           endif 
         next col 
      next lig

      eric

      PS: pour mettre 5 dans la cellule B3 par exemple :
      cells(3,"B")=5
      ou
      cells(3,2)=5 ' B= colonne 2
    3. Merci, j'ai modifier ma macro:

      Sub Macro_Partiel()
      '
      ' Macro1 Macro
      '
      Dim nbLigne As Long
      Dim nbColonne As Long
      Dim message As String
      Dim debut As String

      nbLigne = Range("A1").Value 'Nombre de lignes
      nbColonne = Range("B1").Value 'Nombre de colonnes
      message = Range("C1").Value 'Mot dans la diagonale
      debut = Range("D1").Value 'Point de départ du tableau

      debut = Range(debut).Activate

      ActiveCell.Value = message

      For nbLigne = 1 To nbLigne

      For nbColonne = 1 To nbColonne

      If nbLigne = nbColonne Then
      ActiveCell.Value = message
      Else
      nbLigne = nbLigne + 1
      nbColonne = nbColonne + 1

      End If

      Next nbColonne
      Next nbLigne

      End Sub

      Le soucis c'est que lorsque je lance la macro, il ne se passe rien
    4. Contributeur
      For nbLigne = 1 To nbLigne : non, nbLigne doit conserver sa valeur, c'est plus propre. Utilise une autre variable :
      For Lig = 1 To nbLigne

      nbLigne = nbLigne + 1
      nbColonne = nbColonne + 1

      Là tu exagères, reprend ton cours sur le For et regarde ce que fait le Next

      ActiveCell.Value = message : tu mets tout dans la même cellule, la cellule active.
      Tu n'as pas vu mon PS ?
      PS: pour mettre 5 dans la cellule B3 par exemple :
      cells(3,"B")=5
      ou
      cells(3,2)=5 ' B= colonne 2

      donc cells(lig + y,col + x)= ...
      Avec x et y qui vont bien pour placer le tableau là où tu veux.

      Et n'oublie pas de tester au milieu des boucles si lig=col. Si c'est vrai c'est que tu es sur la diagonale, et tu as un traitement différent selon le cas...

      eric