Utilisation et automatisation des codes à barres avec VBA dans Excel
Intégrer le contrôle ActiveBarcode dans une feuille :
Dans cet exemple, un contrôle de code-barres sera placé directement au-dessus d'une cellule. Le code-barres semble alors se trouver à l'intérieur d'une cellule.
Nous commençons par lire la taille des cellules :
CurrentCell = "C3" MyHeight = Range(CurrentCell).Height MyWidth = Range(CurrentCell).Width MyTop = Range(CurrentCell).Top MyLeft = Range(CurrentCell).LeftVeuillez noter qu'une cellule doit avoir une taille minimale pour que le code-barres puisse s'y insérer. Si la cellule est trop petite, une erreur de taille sera affichée. Nous redimensionnons donc la hauteur de la cellule à 30 pixels :
' Enlarge the cell height to 30 pixels Range(CurrentCell).RowHeight = 30La fonction suivante créera le contrôle de code-barres directement au-dessus de la cellule :
ActiveSheet.OLEObjects.Add(ClassType:="ACTIVEBARCODE.BarcodeCtrl.1", Link:=False, _ DisplayAsIcon:=False, Width:=MyWidth , Height:=MyHeight, Top:=MyTop + 2,_ Left:=MyLeft + 4).SelectVous pouvez lier directement l'objet code-barres à une cellule :
ActiveSheet.OLEObjects(MyBarcode).LinkedCell = "B7"Pour faciliter l'accès au contrôle, nous stockons le nom du contrôle dans la variable MyBarcode :
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).NameVous pouvez maintenant utiliser les properties et methods de l'objet code-barres comme vous le souhaitez :
' set properties ActiveSheet.OLEObjects(MyBarcode).Object.Font.Size = 8 ActiveSheet.OLEObjects(MyBarcode).Object.Type = 14 ' Code 128 ActiveSheet.OLEObjects(MyBarcode).Object.Text = Range("C3")Si vous n'avez plus besoin du contrôle, vous pouvez le supprimer de la feuille :
ActiveSheet.OLEObjects(MyBarcode).DeleteConseil : s'il est nécessaire que Windows traite les événements à venir (souvent appelé KeepWindowsAlive) au sein d'une macro, vous pouvez le forcer en utilisant la fonction VBA suivante :
DoEventsCela peut s'avérer nécessaire, par exemple si le Contrôleur doit se redessiner.