Macro Tableau avec diagonale différente

doggjamel Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
eriiic Messages postés 24603 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.

A voir également:

1 réponse

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
doggjamel Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
doggjamel Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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