OVH Cloud OVH Cloud

probleme de test un peu fou

5 réponses
Avatar
alain chatellier
Bonjour
j'ai un probleme un peu fou dans VBA

jai le test suivant :

variable1 = 200640azor
variable2 = 200640zzz

le test :

si variable1 >= variable 2 then
indic = 1
else
indic = 0
endif

Sur un PC le resultat est correct : indic = 0
sur un autre PC le resultat est inversé : indic = 1

Existe- t il un parametre dans EXcel qui inverse le tri pour les tests ?

Cordialement

Alain

5 réponses

Avatar
El pequeno
Bonjour
??!?
Essaye avec :
indic = True
Else
indic = False

C'est le langage booléen qu'utilise VBA.
Attention de déclarer la variable indic "As boolean" :
Dim indic As Boolean

Slts


Bonjour
j'ai un probleme un peu fou dans VBA

jai le test suivant :

variable1 = 200640azor
variable2 = 200640zzz

le test :

si variable1 >= variable 2 then
indic = 1
else
indic = 0
endif

Sur un PC le resultat est correct : indic = 0
sur un autre PC le resultat est inversé : indic = 1

Existe- t il un parametre dans EXcel qui inverse le tri pour les tests ?

Cordialement

Alain



Avatar
Pierre Fauconnier
Bonjour

A priori, je ne vois pas de paramètres dans Excel pour déterminer un tri.

Cela étant, je doute du copié-collé de ton code, car dans ton exemple,
200640azor et 200640zzz ne sont pas entre guillemets, et ne peuvent
représenter des variables car les noms de variables doivent commencer par
une lettre ou un _

Fais attention également si, au lieu de valeurs littérales, tu testes des
valeurs de cellules. Tu peux "croire" qu'une cellule contient "200640zzz"
alors qu'elle contient " 200640zzz"...

Il serait donc intéressant que tu donnes le vrai copié-collé de ton code
pour une aide plus pertinente.

--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Les choses qui n'ont rien en commun ont en commun qu'elles n'ont rien en
commun"
Remplacez nospam.nospam par pfi.be pour répondre. Merci


"alain chatellier" a écrit dans
le message de news:
Bonjour
j'ai un probleme un peu fou dans VBA

jai le test suivant :

variable1 = 200640azor
variable2 = 200640zzz

le test :

si variable1 >= variable 2 then
indic = 1
else
indic = 0
endif

Sur un PC le resultat est correct : indic = 0
sur un autre PC le resultat est inversé : indic = 1

Existe- t il un parametre dans EXcel qui inverse le tri pour les tests ?

Cordialement

Alain



Avatar
alain chatellier
Bon,jour de nouveau voici le texte exact de la macro :

Sub entrepot()
'
Dim fdebut As String
Dim fourdeb As String
Dim ffin As String
Dim fourfin As String

'******** récuperation fichier début et fichier fin *********************
Windows("ENTREPOT.xls").Activate
Sheets("TRAITEMENT").Select

Range("E19").Select
fdebut = Range("E19")
fourdeb = "J:CommunACTIVITE RHDA TRAITER" & fdebut & "000.xls"
Range("E21").Select
ffin = Range("E21")
fourfin = "J:CommunACTIVITE RHDA TRAITER" & ffin & "ZZZ.xls"


' traitement de controle sur chaque fichier sélectionné

l = 2: c = 1: cpt = 0
Set fs = Application.FileSearch

With fs
.LookIn = "J:CommunACTIVITE RHDA TRAITER"
.FileName = ".xls"

If .Execute(SortBy:=msoSortByFileName,
SortOrder:=msoSortOrderAscending) > 0 Then
For f = 1 To .FoundFiles.Count
Application.ScreenUpdating = False
§fichier = (.FoundFiles(f))
' selection dans fourchette de fichiers
indic = 0
If §fichier <= fourdeb Then
indic = 1
GoTo nontraite
End If

'**********************************************le probleme se deroule sur
ce test
'********************************************** ou il execute le test come
si il y avait > If §fichier >= fourfin Then
indic = 1
GoTo nontraite
End If

cpt = cpt + 1
Workbooks.Open FileName:=§fichier

nontraite:

Next f
End If
If cpt = 0 Then
texte = "Aucun fichier n'a été trouvé !"
k = MsgBox(texte, vbOKOnly + vbCritical, titre)
GoTo finmac
End If
End With
finmac:
End Sub

En esperant que l'un d'entre vous aura une splendide lumiere
Cordialement

Alain
Avatar
Pierre Fauconnier
Bonjour Alain,

Peut-être un problème de majuscules/minuscules, à régler éventuellement avec
Option Compare Text
en début de module (avant la première fonction ou le premier module)

Sinon, mets un arrêt (F9) sur la ligne qui compare, et affiche les valeurs
comparées, c'est le meilleur moyen de vérifier sur quelles valeurs portent
les tests.

Ok?
--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Les choses qui n'ont rien en commun ont en commun qu'elles n'ont rien en
commun"
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"alain chatellier" a écrit dans
le message de news:
Bon,jour de nouveau voici le texte exact de la macro :

Sub entrepot()
'
Dim fdebut As String
Dim fourdeb As String
Dim ffin As String
Dim fourfin As String

'******** récuperation fichier début et fichier fin *********************
Windows("ENTREPOT.xls").Activate
Sheets("TRAITEMENT").Select

Range("E19").Select
fdebut = Range("E19")
fourdeb = "J:CommunACTIVITE RHDA TRAITER" & fdebut & "000.xls"
Range("E21").Select
ffin = Range("E21")
fourfin = "J:CommunACTIVITE RHDA TRAITER" & ffin & "ZZZ.xls"


' traitement de controle sur chaque fichier sélectionné

l = 2: c = 1: cpt = 0
Set fs = Application.FileSearch

With fs
.LookIn = "J:CommunACTIVITE RHDA TRAITER"
.FileName = ".xls"

If .Execute(SortBy:=msoSortByFileName,
SortOrder:=msoSortOrderAscending) > 0 Then
For f = 1 To .FoundFiles.Count
Application.ScreenUpdating = False
§fichier = (.FoundFiles(f))
' selection dans fourchette de fichiers
indic = 0
If §fichier <= fourdeb Then
indic = 1
GoTo nontraite
End If

'**********************************************le probleme se deroule sur
ce test
'********************************************** ou il execute le test
come
si il y avait > > If §fichier >= fourfin Then
indic = 1
GoTo nontraite
End If

cpt = cpt + 1
Workbooks.Open FileName:=§fichier

nontraite:

Next f
End If
If cpt = 0 Then
texte = "Aucun fichier n'a été trouvé !"
k = MsgBox(texte, vbOKOnly + vbCritical, titre)
GoTo finmac
End If
End With
finmac:
End Sub

En esperant que l'un d'entre vous aura une splendide lumiere
Cordialement

Alain




Avatar
alain chatellier
Bonjour, effectivement un probleme de majuscules et minuscules.

Nous travailloins avec des disques serveurs attribuées en gros par service

Mon PC et celui de l'utilisatrice de la macro ne sont pas sur le même
serveur et comme par hasard le nom du répertoire d'accueil s'ecrit "Commun"
sur l'un et "commun" sur l'autre et comme je prends le chemin complet pour la
selection
et bien je me retrouves avec un test batard.

Cordialement pour votre aide
Alain

Bonjour Alain,

Peut-être un problème de majuscules/minuscules, à régler éventuellement avec
Option Compare Text
en début de module (avant la première fonction ou le premier module)

Sinon, mets un arrêt (F9) sur la ligne qui compare, et affiche les valeurs
comparées, c'est le meilleur moyen de vérifier sur quelles valeurs portent
les tests.

Ok?
--
Pierre Fauconnier () (Skype:
pierre_fauconnier)
"Les choses qui n'ont rien en commun ont en commun qu'elles n'ont rien en
commun"
Remplacez nospam.nospam par pfi.be pour répondre. Merci

"alain chatellier" a écrit dans
le message de news:
Bon,jour de nouveau voici le texte exact de la macro :

Sub entrepot()
'
Dim fdebut As String
Dim fourdeb As String
Dim ffin As String
Dim fourfin As String

'******** récuperation fichier début et fichier fin *********************
Windows("ENTREPOT.xls").Activate
Sheets("TRAITEMENT").Select

Range("E19").Select
fdebut = Range("E19")
fourdeb = "J:CommunACTIVITE RHDA TRAITER" & fdebut & "000.xls"
Range("E21").Select
ffin = Range("E21")
fourfin = "J:CommunACTIVITE RHDA TRAITER" & ffin & "ZZZ.xls"


' traitement de controle sur chaque fichier sélectionné

l = 2: c = 1: cpt = 0
Set fs = Application.FileSearch

With fs
.LookIn = "J:CommunACTIVITE RHDA TRAITER"
.FileName = ".xls"

If .Execute(SortBy:=msoSortByFileName,
SortOrder:=msoSortOrderAscending) > 0 Then
For f = 1 To .FoundFiles.Count
Application.ScreenUpdating = False
§fichier = (.FoundFiles(f))
' selection dans fourchette de fichiers
indic = 0
If §fichier <= fourdeb Then
indic = 1
GoTo nontraite
End If

'**********************************************le probleme se deroule sur
ce test
'********************************************** ou il execute le test
come
si il y avait > > > If §fichier >= fourfin Then
indic = 1
GoTo nontraite
End If

cpt = cpt + 1
Workbooks.Open FileName:=§fichier

nontraite:

Next f
End If
If cpt = 0 Then
texte = "Aucun fichier n'a été trouvé !"
k = MsgBox(texte, vbOKOnly + vbCritical, titre)
GoTo finmac
End If
End With
finmac:
End Sub

En esperant que l'un d'entre vous aura une splendide lumiere
Cordialement

Alain