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 -
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.
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
-
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
-
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 -
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 -
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 -
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
-