Excel
Objets code-barres avec VBA

Utilisation et automatisation des codes à barres avec VBA dans Excel

1

Vous pouvez utiliser VisualBasic for Applications (VBA) pour résoudre beaucoup de choses dans Excel. Ici, nous allons vous montrer comment intégrer, utiliser et supprimer le contrôle ActiveBarcode avec VBA:

Intégration du contrôle ActiveBarcode dans une feuille :
Dans cet exemple, un contrôle de code à barres sera placé directement au-dessus d'une cellule. Ensuite, il semble que le code-barres serait à l'intérieur d'une cellule.

Tout d'abord, nous lisons la taille des cellules:

CurrentCell = "C3"
MyHeight = Range(CurrentCell).Height
MyWidth = Range(CurrentCell).Width
MyTop = Range(CurrentCell).Top
MyLeft = Range(CurrentCell).Left
Veuillez noter qu'une cellule doit avoir une taille minimale afin que le code-barres puisse s'y intégrer. Si la cellule est trop petite, une « erreur de taille » s'affiche. Donc, nous redimensionnons la hauteur de la cellule à 30 pixels:
' Enlarge the cell height to 30 pixels
Range(CurrentCell).RowHeight = 30
La fonction suivante créera le contrôle du 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).Select
Pour accéder facilement au contrôle, nous rappelons le nom du contrôle dans une variable nommée 'MyBarcode' :
MyBarcode = ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Name
Maintenant, vous pouvez utiliser les propriétés et les méthodes de l'objet de 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).Delete
Astuce: S'il est nécessaire que Windows traiter les événements à venir (souvent nommé comme "KeepWindowsAlive") dans une macro, vous pouvez forcer cela en utilisant la fonction VBA suivante:
DoEvents
Cela peut être nécessaire, par exemple si le Contrôle doit se dessiner à nouveau.