Automatiser les processus de conception de l’agencement des installations, Excel VBA

L’automatisation des processus de conception d’agencement des installations avec VBA dans Excel implique généralement la gestion de données relatives aux dimensions, à l’emplacement des équipements, à l’optimisation de l’espace, ainsi que la génération de plans ou d’autres documents pertinents. Voici un exemple de code VBA détaillé pour automatiser une partie de ce processus.

Contexte de l’exemple

Imaginons que vous deviez gérer un agencement d’une usine ou d’un bureau, où vous devez placer différents équipements (bureaux, machines, étagères) dans des espaces de travail, en tenant compte de leurs dimensions et des contraintes d’espace.

Le processus d’automatisation peut inclure :

  • Création d’un tableau de données des équipements, avec leurs dimensions (longueur, largeur, hauteur) et type (bureau, machine, etc.).
  • Calcul des positions pour chaque équipement en fonction de l’espace disponible et des contraintes.
  • Génération d’un plan de l’agencement basé sur les positions calculées.

Étapes

  1. Création d’un tableau de données d’équipements (dimensions et type d’équipement).
  2. Calcul des positions des équipements dans l’espace disponible.
  3. Affichage des équipements dans une feuille Excel (représentation simple avec des formes).
  4. Gestion des conflits d’agencement pour éviter que les équipements se chevauchent.

Voici un exemple de code VBA pour automatiser ce processus :

  1. Préparation des données

Dans cet exemple, on suppose que les équipements sont stockés dans une feuille nommée « Équipements », avec les colonnes suivantes :

  • Nom de l’équipement (colonne A)
  • Type d’équipement (colonne B)
  • Longueur (colonne C)
  • Largeur (colonne D)
  1. Code VBA
Sub GenererAgencement()
    ' Variables
    Dim ws As Worksheet
    Dim wsAgencement As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim Equipement As String
    Dim TypeEquipement As String
    Dim Longueur As Double
    Dim Largeur As Double
    Dim xPos As Double
    Dim yPos As Double
    Dim iCol As Long
    Dim iRow As Long
    Dim Forme As Shape   
    ' Références aux feuilles
    Set ws = ThisWorkbook.Sheets("Équipements")
    Set wsAgencement = ThisWorkbook.Sheets("Agencement")   
    ' Effacer les anciennes formes de l'agencement
    wsAgencement.Shapes.Clear   
    ' Dernière ligne avec des données dans la feuille "Équipements"
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row   
    ' Initialisation des positions
    xPos = 0 ' Position X de départ
    yPos = 0 ' Position Y de départ   
    ' Parcours des équipements
    For i = 2 To lastRow ' En commençant à la ligne 2 pour ignorer l'en-tête
        Equipement = ws.Cells(i, 1).Value
        TypeEquipement = ws.Cells(i, 2).Value
        Longueur = ws.Cells(i, 3).Value
        Largeur = ws.Cells(i, 4).Value       
        ' Vérifier si l'équipement rentre sur la ligne actuelle
        If xPos + Longueur > wsAgencement.PageSetup.PageWidth Then
            ' Si dépassement de la largeur, passer à la ligne suivante
            xPos = 0
            yPos = yPos + 150 ' Espacement entre les lignes (ajustez selon besoin)
        End If       
        ' Créer une forme pour représenter l'équipement dans l'agencement
        Set Forme = wsAgencement.Shapes.AddShape(msoShapeRectangle, xPos, yPos, Longueur, Largeur)       
        ' Ajouter le nom de l'équipement dans la forme
        Forme.TextFrame.Characters.Text = Equipement       
        ' Appliquer un style de remplissage pour chaque type d'équipement
        Select Case TypeEquipement
            Case "Bureau"
                Forme.Fill.ForeColor.RGB = RGB(0, 255, 0) ' Vert pour les bureaux
            Case "Machine"
                Forme.Fill.ForeColor.RGB = RGB(255, 0, 0) ' Rouge pour les machines
            Case "Étagère"
                Forme.Fill.ForeColor.RGB = RGB(0, 0, 255) ' Bleu pour les étagères
            Case Else
                Forme.Fill.ForeColor.RGB = RGB(200, 200, 200) ' Gris par défaut
        End Select       
        ' Déplacer la position X pour le prochain équipement
        xPos = xPos + Longueur + 10 ' 10 est l'espace entre les équipements    
    Next i
    MsgBox "Agencement généré avec succès!", vbInformation
End Sub

Explications du Code

  1. Déclaration des Variables :
    • ws fait référence à la feuille contenant les données des équipements (« Équipements »).
    • wsAgencement fait référence à la feuille où l’agencement visuel sera créé (« Agencement »).
    • lastRow récupère la dernière ligne de la colonne A dans la feuille « Équipements » pour savoir combien d’équipements doivent être traités.
  2. Effacement des Formes Précédentes :
    • Avant de commencer, le code efface les anciennes formes dans la feuille « Agencement » pour ne pas superposer les nouveaux éléments avec les anciens.
  3. Parcours des Equipements :
    • Le code parcourt chaque ligne de la feuille « Équipements » (de la ligne 2 à la dernière ligne avec des données).
    • Pour chaque équipement, il récupère les informations (nom, type, longueur, largeur) et détermine la position dans l’agencement.
  4. Calcul des Positions :
    • Le code commence avec une position (xPos, yPos) initiale à (0, 0). Si l’équipement dépasse la largeur de la page, la position est réinitialisée et le code passe à la ligne suivante.
    • Les équipements sont placés côte à côte, avec un espacement de 10 unités entre eux.
  5. Création de Formes :
    • Pour chaque équipement, une forme rectangulaire est ajoutée à la feuille « Agencement » avec les dimensions spécifiées.
    • Le texte du nom de l’équipement est ajouté à la forme.
    • Le type d’équipement détermine la couleur de remplissage de la forme.
  6. Affichage d’un Message de Confirmation :
    • Une fois tous les équipements placés, un message pop-up informe l’utilisateur que l’agencement a été généré avec succès.

Améliorations Possibles

  • Gestion des Conflits : Vous pouvez ajouter une logique pour vérifier si deux équipements se chevauchent avant de les placer (en vérifiant les coordonnées).
  • Optimisation de l’Espace : Ajouter des fonctionnalités pour optimiser l’agencement en fonction des dimensions des pièces disponibles.
  • Personnalisation de l’Affichage : Modifier l’apparence des formes (ajouter des bordures, textes en gras, etc.).
  • Prise en charge de plusieurs niveaux : Si votre agencement a plusieurs étages ou niveaux, vous pourriez ajouter une gestion des couches ou des onglets supplémentaires.

Cela permet de créer un agencement de base pour les installations, mais peut être étendu en fonction des besoins spécifiques de votre projet.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x