application.version

Issimo

XLDnaute Nouveau
Bonjour,

Hier j'ai eu un soucis avec le code suivant :

Code:
if application.version = 11 then

Sur mon ordinateur, ce code fonctionne parfaitement, mais sur l'ordinateur d'une personne qui utilise le même fichier que moi, cette ligne de code déclenche une erreur "incompatibilité de type".

J'ai réussi à contourner le problème en mettant le "11" (ou 12 ou 14) dans une cellule et en faisant ensuite référence à cette cellule mais plus généralement, j'aimerais comprendre pourquoi le même code, dans le même fichier et dans la même version d'excel peut générere ou non une erreur selon l'ordinateur.
 

Cousinhub

XLDnaute Barbatruc
Re : application.version

Bonsoir,

Je pense que ce que tu nous donnes comme indication est quelque peu insuffisante....

Cette ligne te donne :

Code:
X = Application.Version

Si X est déclaré en Byte :

Code:
Dim X As Byte

Une erreur....

si X est déclarée en String, ou en Variant :

"11.0"


A toi de choisir....

Bonne soirée
 

Issimo

XLDnaute Nouveau
Re : application.version

quelques précisions :
En fait, j'ai utilisé "application.version" directement, sans déclarer quoi que ce soit.

"as byte" : je suis désolé, je ne sais pas ce que c'est, je n'ai jamais utilisé ça.

Par contre j'ai fait un test sur les deux ordinateurs et les résultats sont différents :

Code:
Private Sub CommandButton1_Click()
    Range("C1:C7").ClearContents
    Range("C1").Value = Application.Version
    
    Dim aaa As String
    Dim bbb As Integer
    Dim ccc As Double
    Dim ddd As Variant
    aaa = Range("C1").Value
    bbb = Range("C1").Value
    ccc = Range("C1").Value
    ddd = Range("C1").Value
    On Error Resume Next
    If Application.Version = aaa Then Range("C2").Value = "ok"
    If Application.Version = bbb Then Range("C3").Value = "ok"
    If Application.Version = ccc Then Range("C4").Value = "ok"
    If Application.Version = ddd Then Range("C5").Value = "ok"
    
    Dim laversion As Variant
    laversion = Application.Version
    If laversion = 12 Then
        Range("C6").Value = "Excel 2007"
    End If
    If laversion = 11 Then
        Range("C6").Value = "Excel 2003"
    End If
    
    Dim laversion2 As Double
    laversion2 = Application.Version
    If laversion2 = 12 Then
        Range("C7").Value = "Excel 2007"
    End If
    If laversion2 = 11 Then
        Range("C7").Value = "Excel 2003"
    End If
End Sub

résultats sur mon ordinateur :
version= 11
a=
b= ok
c= ok
d=
Excel= Excel 2003
Excel= Excel 2003


résultats sur l'autre ordinateur :
version= 11
a=
b= ok
c= ok
d=
Excel=
Excel=

Donc instinctivement, je me dis que application.version n'aime pas les formats string et variant et qu'il préfère integer ou double. Ensuite pourquoi les 2 dernières lignes sont remplies sur mon ordinateur et pas sur l'autre : mystère !
 

MJ13

XLDnaute Barbatruc
Re : application.version

Bonjour Issimo, Pierrot, BHBH
Voir ce fichier à tester:
 

Pièces jointes

  • Version.xls
    29 KB · Affichages: 111
  • Version.xls
    29 KB · Affichages: 115
  • Version.xls
    29 KB · Affichages: 115
  • Version.xlsm
    12.8 KB · Affichages: 77

Issimo

XLDnaute Nouveau
Re : application.version

Oui, Pierrot 93 le code fonctionne très bien sur mon ordinateur.
J'essayerai ensuite de le tester sur d'autre ordinateurs pour voir si son fonctionnement est plus "universel" que "application.version = 11" qui ne fonctionne que sur certains ordinateurs.

@bhbh
Sur mon ordinateur, ta solution fonctionne quel que soit le type (byte, string, integer, double, variant).

Code:
Sub essai2()
Dim x As Byte
x = Val(Application.Version)
MsgBox x
End Sub

Merci à vous deux !

Maintenant, si quelqu'un a une idée sur le fait qu'une même solution peut fonctionner ou non selon l'ordinateur utilisé, je suis preneur.
 

Discussions similaires

Réponses
1
Affichages
113

Statistiques des forums

Discussions
312 102
Messages
2 085 304
Membres
102 857
dernier inscrit
Nony1931