Excel
Objets de code-barres avec VBA

 Standard ou plus

Utilisation et automatisation des codes à barres avec VBA dans Excel

Vous pouvez utiliser VisualBasic for Applications (VBA) pour résoudre de nombreux problèmes dans Excel. Nous allons vous montrer comment intégrer, utiliser et supprimer le contrôle ActiveBarcode avec VBA:

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).Left
Veuillez 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 = 30
La 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).Select
Vous 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).Name
Vous 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).Delete
Conseil : s'il est nécessaire que Windows traite les événements à venir (souvent appelés "KeepWindowsAlive") dans une macro, vous pouvez le forcer en utilisant la fonction VBA suivante :
DoEvents
Cela peut s'avérer nécessaire, par exemple si le Contrôleur doit se redessiner.