VBA _ Appel à une cellule (0;0)
Bonjour,
Je souhaite modéliser un angle de bâtiment sur Excel composé de divers matériaux. Pour cela, je discrétise la composition de mon mur mais avant tout je dois le "dessiner". Afin de procéder à une automatisation, je souhaitais utiliser des macros. Pour ne pas que le code soit trop long, j'ai pensé mettre des coefficients =1 ou = 0 selon si j'ai 1 matériau, 2, 3 jusqu'à 10.
Je suis débutante en VBA, j'y travaille seulement depuis 2 jours donc il est possible que je ne pense pas à la bonne solution.
L'erreur détectée dans mon code est due au fait que je fais appel à une cellule qui a pour coordonnées (ligne 0 ; colonne 0). Comment puis-je résoudre ce problème ?
Je vous joint le code afin que vous pussiez réellement comprendre le problème et je reste à disposition pour toutes les questions.
Sub ESSAI()
Ep1 = Excel.Range("Ep_1").Value
Ep2 = Excel.Range("Ep_2").Value
Ep3 = Excel.Range("Ep_3").Value
Ep4 = Excel.Range("Ep_4").Value
Ep5 = Excel.Range("Ep_5").Value
Ep6 = Excel.Range("Ep_6").Value
Ep7 = Excel.Range("Ep_7").Value
Ep8 = Excel.Range("Ep_8").Value
Ep9 = Excel.Range("Ep_9").Value
Ep10 = Excel.Range("Ep_10").Value
pas = Excel.Range("pas").Value
Debord = Excel.Range("Débord").Value
DessDeb = Debord / pas + 1
Dess1 = Ep1 / pas
Dess2 = Ep2 / pas
Dess3 = Ep3 / pas
Dess4 = Ep4 / pas
Dess5 = Ep5 / pas
Dess6 = Ep6 / pas
Dess7 = Ep7 / pas
Dess8 = Ep8 / pas
Dess9 = Ep9 / pas
Dess10 = Ep10 / pas
C1 = 1
C2 = 1
C3 = 1
C4 = 1
C5 = 1
C6 = 1
C7 = 1
C8 = 1
C9 = 1
C10 = 1
If Ep1 = "" Then
MsgBox "Entrez les données sur les matériaux"
C1 = 0
C2 = 0
C3 = 0
C4 = 0
C5 = 0
C6 = 0
C7 = 0
C8 = 0
C9 = 0
C10 = 0
Else
If Ep2 = "" Then
C2 = 0
C3 = 0
C4 = 0
C5 = 0
C6 = 0
C7 = 0
C8 = 0
C9 = 0
C10 = 0
Else
If Ep3 = "" Then
C3 = 0
C4 = 0
C5 = 0
C6 = 0
C7 = 0
C8 = 0
C9 = 0
C10 = 0
Else
If Ep4 = "" Then
C4 = 0
C5 = 0
C6 = 0
C7 = 0
C8 = 0
C9 = 0
C10 = 0
Else
If Ep5 = "" Then
C5 = 0
C6 = 0
C7 = 0
C8 = 0
C9 = 0
C10 = 0
Else
If Ep6 = "" Then
C6 = 0
C7 = 0
C8 = 0
C9 = 0
C10 = 0
Else
If Ep7 = "" Then
C7 = 0
C8 = 0
C9 = 0
C10 = 0
Else
If Ep8 = "" Then
C8 = 0
C9 = 0
C10 = 0
Else
If Ep9 = "" Then
C9 = 0
C10 = 0
Else
If Ep10 = "" Then
C10 = 0
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
DessMur = Dess1 + C2 * 1 + Dess2 + C3 * 1 + Dess3 + C4 * 1 + Dess4 + C5 * 1 + Dess5 + C6 * 1 + Dess6 + C7 * 1 + Dess7 + C8 * 1 + ess8 + C9 * 1 + Dess9 + C10 * 1 + Dess10
DessInter2 = Dess1 + C2 * 1 + Dess2
DessInter3 = DessInter2 + C3 * 1 + Dess3
DessInter4 = DessInter3 + C4 * 1 + Dess4
DessInter5 = DessInter4 + C5 * 1 + Dess5
DessInter6 = DessInter5 + C6 * 1 + Dess6
DessInter7 = DessInter6 + C7 * 1 + Dess7
DessInter8 = DessInter7 + C8 * 1 + Dess8
DessInter9 = DessInter8 + C9 * 1 + Dess9
DebMur = DessDeb + DessMur
Sheets("Feuil2").Select
Cells.Select
ActiveSheet.Cells.Clear
' Dessin selon les lignes
For lg_no = 1 To Dess1
For col_no = 1 To DebMur
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 15
Next col_no
Next lg_no
For col_no = 1 To DebMur - Dess1
Worksheets("Feuil2").Cells(Dess1 + 1 * C2, col_no).Interior.ColorIndex = 3
Next col_no
For lg_no = Dess1 + 2 * C2 To DessInter2
For col_no = 1 To DebMur - Dess1 - 1 * C2
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next col_no
Next lg_no
For col_no = 1 To DebMur - DessInter2
Worksheets("Feuil2").Cells(DessInter2 + 1 * C3, col_no).Interior.ColorIndex = 3
Next col_no
For lg_no = DessInter2 + 2 * C3 To DessInter3
For col_no = 1 To DebMur - DessInter2 - 1 * C3
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next col_no
Next lg_no
For col_no = 1 To DebMur - DessInter3
Worksheets("Feuil2").Cells(DessInter3 + 1 * C4, col_no).Interior.ColorIndex = 3
Next col_no
For lg_no = DessInter3 + 2 * C4 To DessInter4
For col_no = 1 To DebMur - DessInter3 - 1 * C4
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next col_no
Next lg_no
For col_no = 1 To DebMur - DessInter4
Worksheets("Feuil2").Cells(DessInter4 + 1 * C5, col_no).Interior.ColorIndex = 3
Next col_no
For lg_no = DessInter4 + 2 * C5 To DessInter5
For col_no = 1 To DebMur - DessInter4 - 1 * C5
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next col_no
Next lg_no
For col_no = 1 To DebMur - DessInter5
Worksheets("Feuil2").Cells(DessInter5 + 1 * C6, col_no).Interior.ColorIndex = 3
Next col_no
For lg_no = DessInter5 + 2 * C6 To DessInter6
For col_no = 1 To DebMur - DessInter5 - 1 * C6
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next col_no
Next lg_no
For col_no = 1 To DebMur - DessInter6
Worksheets("Feuil2").Cells(DessInter6 + 1 * C7, col_no).Interior.ColorIndex = 3
Next col_no
For lg_no = DessInter6 + 2 * C7 To DessInter7
For col_no = 1 To DebMur - DessInter6 - 1 * C7
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 12
Next col_no
Next lg_no
For col_no = 1 To DebMur - DessInter7
Worksheets("Feuil2").Cells(DessInter7 + 1 * C8, col_no).Interior.ColorIndex = 3
Next col_no
For lg_no = DessInter7 + 2 * C8 To DessInter8
For col_no = 1 To DebMur - DessInter7 - 1 * C8
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 22
Next col_no
Next lg_no
For col_no = 1 To DebMur - DessInter8
Worksheets("Feuil2").Cells(DessInter8 + 1 * C9, col_no).Interior.ColorIndex = 3
Next col_no
For lg_no = DessInter8 + 2 * C9 To DessInter9
For col_no = 1 To DebMur - DessInter8 - 1 * C9
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 53
Next col_no
Next lg_no
For col_no = 1 To DebMur - DessInter9
Worksheets("Feuil2").Cells(DessInter9 + 1 * C10, col_no).Interior.ColorIndex = 3
Next col_no
For lg_no = DessInter9 + 2 * C10 To DessMur
For col_no = 1 To DebMur - DessInter9 - 1 * C10
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 17
Next col_no
Next lg_no
' Dessin selon les colonnes
For col_no = DebMur - Dess1 + 1 * C1 To DebMur
For lg_no = 1 To DebMur
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 15
Next lg_no
Next col_no
For lg_no = Dess1 + 1 To DebMur
Worksheets("Feuil2").Cells(lg_no, DebMur - Dess1).Interior.ColorIndex = 3
Next lg_no
For col_no = DebMur - DessInter2 + 1 To DebMur - Dess1 - 1
For lg_no = Dess1 + 2 To DebMur
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next lg_no
Next col_no
For lg_no = DessInter2 + 1 To DebMur
Worksheets("Feuil2").Cells(lg_no, DebMur - DessInter2).Interior.ColorIndex = 3
Next lg_no
For col_no = DebMur - DessInter3 + 1 To DebMur - DessInter2 - 1
For lg_no = DessInter2 + 2 To DebMur
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next lg_no
Next col_no
For lg_no = DessInter3 + 1 To DebMur
Worksheets("Feuil2").Cells(lg_no, DebMur - DessInter3).Interior.ColorIndex = 3
Next lg_no
For col_no = DebMur - DessInter4 + 1 To DebMur - DessInter3 - 1
For lg_no = DessInter3 + 2 To DebMur
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next lg_no
Next col_no
For lg_no = DessInter4 + 1 To DebMur
Worksheets("Feuil2").Cells(lg_no, DebMur - DessInter4).Interior.ColorIndex = 3
Next lg_no
For col_no = DebMur - DessInter5 + 1 To DebMur - DessInter4 - 1
For lg_no = DessInter4 + 2 To DebMur
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next lg_no
Next col_no
For lg_no = DessInter5 + 1 To DebMur
Worksheets("Feuil2").Cells(lg_no, DebMur - DessInter5).Interior.ColorIndex = 3
Next lg_no
For col_no = DebMur - DessInter6 + 1 To DebMur - DessInter5 - 1
For lg_no = DessInter5 + 2 To DebMur
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next lg_no
Next col_no
For lg_no = DessInter6 + 1 To DebMur
Worksheets("Feuil2").Cells(lg_no, DebMur - DessInter6).Interior.ColorIndex = 3
Next lg_no
For col_no = DebMur - DessInter7 + 1 To DebMur - DessInter6 - 1
For lg_no = DessInter6 + 2 To DebMur
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next lg_no
Next col_no
For lg_no = DessInter7 + 1 To DebMur
Worksheets("Feuil2").Cells(lg_no, DebMur - DessInter7).Interior.ColorIndex = 3
Next lg_no
For col_no = DebMur - DessInter8 + 1 To DebMur - DessInter7 - 1
For lg_no = DessInter7 + 2 To DebMur
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next lg_no
Next col_no
For lg_no = DessInter8 + 1 To DebMur
Worksheets("Feuil2").Cells(lg_no, DebMur - DessInter8).Interior.ColorIndex = 3
Next lg_no
For col_no = DebMur - DessInter9 + 1 To DebMur - DessInter8 - 1
For lg_no = DessInter8 + 2 To DebMur
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next lg_no
Next col_no
For lg_no = DessInter9 + 1 To DebMur
Worksheets("Feuil2").Cells(lg_no, DebMur - DessInter9).Interior.ColorIndex = 3
Next lg_no
For col_no = DebMur - DessMur + 1 To DebMur - DessInter9 - 1
For lg_no = DessInter9 + 2 To DebMur
Worksheets("Feuil2").Cells(lg_no, col_no).Interior.ColorIndex = 36
Next lg_no
Next col_no
Cells.Select
With Selection.Font
.Name = "Arial"
.Size = 6
End With
Cells.EntireColumn.AutoFit
Cells.EntireRow.AutoFit
End SubJe vous remercie d'avance de l'attention que vous accorderez à ce problème.
Alila
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
Bonjour et bienvenue,
Ce n'est surement pas la bonne méthode !
Envoie le fichier, que l'on examine de + près
en y mettant des annotations de ce que tu veux.
Amicalement
Claude
Merci pour la réponse
Je joints donc le fichier disponible à cette adresse :
https://www.excel-pratique.com/~bigfiles/doc/Angle.rar
Il y a deux macros.
Et une petite question supplémentaire tant que j'y suis, j'utilise des données qui se répètent : comment faire pour ne les nommer qu'une fois et aussi comment faire pour qu'un bouton lance plusieurs macros ?
Merci encore pour votre aide
- Messages
- 9'245
- Excel
- Vista Office 2007FR
- Inscrit
- 08/12/2007
- Emploi
- retraité Sce.Méthodes
re,
Je suis débutante en VBA, j'y travaille seulement depuis 2 jours
J'ai ouvert et vite refermé ton fichier !
essaye de démarrer avec un petit exemple au lieu d'une usine à gaz de 1 Mo
Je ne donne pas suite, mais espoir si un courageux !
Claude
Bonsoir,
Une usine à gaz ça c'est sur, mais je dois réaliser cela dans le cadre d'un projet en entreprise...
Je n'ai donc pas le choix.
J'ai déjà fait de la programmation mais essentiellement en langage JAVA.
Le problème que j'ai n'est donc pas la programmation en elle-même mais plutôt la syntaxe en Visual Basic.
Merci
Alila