Macro Tableau avec diagonale différente

doggjamel Messages postés 6 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
    0
    1. doggjamel Messages postés 6 Statut Membre
       
      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
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0
    3. doggjamel Messages postés 6 Statut Membre
       
      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
      0
    4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
      0