FAQ TBarCode OCX
Impression via Excel VBA : le code-barres n'est pas mis à jour
Impression via Excel VBA : le code-barres n'est pas mis à jour
Vous modifiez le contenu des cellules liées ou du contrôle de code-barres, puis imprimez directement depuis VBA. Mais vous constatez que les contrôles de code-barres contiennent toujours les anciennes valeurs. La raison est qu'Excel n'envoie pas de commande de redessin aux contrôles ActiveX avant l'impression (si celle-ci est effectuée depuis VBA). Il s'agit d'un bug d'Excel.
Il existe une solution de contournement pour forcer un redessin des objets : vous devez adresser chaque contrôle ActiveX de code-barres par programmation en VBA et modifier sa taille avant l'impression. Il sera alors redessiné par Excel.
'redraw a single barcode object by addressing it through its instance name Dim origValue origValue = TBarCode101.Width TBarCode101.Width = origValue + 1 TBarCode101.Width = origValue
' redraw all ActiveX Controls on the current sheet
Sub UpdateOLEControls()
Dim myShape As shape
Dim counter As Integer
Dim origWidth As Single
For counter = 1 To ActiveSheet.Shapes.Count
Set myShape = ActiveSheet.Shapes(counter)
If (myShape.Type = msoOLEControlObject) Then
' resize => force redraw
origWidth = myShape.Width
myShape.Width = origWidth + 1
myShape.Width = origWidth
End If
Next counter
End Sub