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 Sub

Je vous remercie d'avance de l'attention que vous accorderez à ce problème.

Alila

4siriux81-v4.xlsm (34.59 Ko)

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

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

Rechercher des sujets similaires à "vba appel"