Erreur 13 type missmatch vba
Fermé
bilancourt
Messages postés
4
Date d'inscription
samedi 17 août 2013
Statut
Membre
Dernière intervention
21 mars 2021
-
21 mars 2021 à 13:54
Lupin - 27 mars 2021 à 23:57
Lupin - 27 mars 2021 à 23:57
A voir également:
- Erreur 13 type missmatch vba
- Erreur 0x80070643 - Accueil - Windows
- Redmi note 13 5g test - Accueil - Téléphones
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 3005 france tv - Forum TV & Vidéo
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
6 réponses
jordane45
Messages postés
38446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 février 2025
4 737
21 mars 2021 à 14:12
21 mars 2021 à 14:12
Bonjour,
Ton *1 ne sert à rien.
A la place, utilise l'instruction CLng(String)
A noter également que tu fais un replace du point par la virgule ... mais ... quel est le séparateur décimal utilisé dans ton système ?
En général.. c'est le point qui est utilisé .. donc 123,45 est un text (non convertible en nombre) alors que 123.45 est lui, bien compris en tant que nombre.
Ton *1 ne sert à rien.
A la place, utilise l'instruction CLng(String)
A noter également que tu fais un replace du point par la virgule ... mais ... quel est le séparateur décimal utilisé dans ton système ?
En général.. c'est le point qui est utilisé .. donc 123,45 est un text (non convertible en nombre) alors que 123.45 est lui, bien compris en tant que nombre.
Bonjour
Sous VBA l'instruction
Dim NUMINS, IDETU, COMPOS As String
est en réalité
NUMINS As Variant, IDETU As Variant, COMPOS As string
pas étonnant que tu ais "Erreur 13: type mismatch"
Lupin
Sous VBA l'instruction
Dim NUMINS, IDETU, COMPOS As String
est en réalité
NUMINS As Variant, IDETU As Variant, COMPOS As string
pas étonnant que tu ais "Erreur 13: type mismatch"
Lupin
Bonjour,
Après avoir appliquer vos réponses l'erreur persiste:
voici mon code intégrale:
Dim NUMINS As Variant, IDETU As Variant, COMPOS As String
Dim PRGM_CODE, PRGM_LIBL, MODEL_CODE, PRGM_EXED As String
Dim Module_Code, Module_Type, Module_Pays, Module_Dure_Str As String
Dim Module_Dure As Long
Dim OutG_Type, OutG_Dure_Str, OutG_Pays As String
Dim OutG_Dure As Long
Dim ExpPro_Type, ExpPro_Dure_Str, ExpPro_Pays As String
' Correction dépassement de capacité - Modif String par Long
Dim ExpPro_Dure As Long
FeuilleIMP = 1
FeuilleRES = 2
ExpPro_Dure_Str = ""
Sheets(FeuilleIMP).Range("A:DP").ClearContents
Sheets(FeuilleRES).Range("A:DP").ClearContents
i = 2
' COMPOS DIPLOM
Sheets(FeuilleRES).Activate
j = 1
Sheets(FeuilleRES).Cells(j, 1) = "NUMINS"
Sheets(FeuilleRES).Cells(j, 2) = "IDETU"
Sheets(FeuilleRES).Cells(j, 3) = "COMPOS"
Sheets(FeuilleRES).Cells(j, 4) = "DIPLOM"
Sheets(FeuilleRES).Cells(j, 5) = "DUREE_MOBPCO"
Sheets(FeuilleRES).Cells(j, 6) = "TYPE_MOBPCO"
Sheets(FeuilleRES).Cells(j, 7) = "PAYS_MOBPCO"
'Ajout CK
Sheets(FeuilleRES).Cells(j, 8) = "CODE_DIPLOME"
Sheets(FeuilleRES).Cells(j, 9) = "REGIME"
Sheets(FeuilleRES).Cells(j, 10) = "Durée Semestre Campus"
Sheets(FeuilleRES).Cells(j, 11) = "Pays Semestre Campus"
Sheets(FeuilleRES).Cells(j, 12) = "Pays INSEE Semestre Campus"
Sheets(FeuilleRES).Cells(j, 13) = "Type semestre"
Sheets(FeuilleRES).Cells(j, 15) = "Durée Outgoing"
Sheets(FeuilleRES).Cells(j, 16) = "Pays Outgoing"
Sheets(FeuilleRES).Cells(j, 17) = "Pays INSEE Outgoing"
Sheets(FeuilleRES).Cells(j, 18) = "Type événement"
Sheets(FeuilleRES).Cells(j, 20) = "Durée ExpPro"
Sheets(FeuilleRES).Cells(j, 21) = "Pays ExpPro"
Sheets(FeuilleRES).Cells(j, 22) = "Pays INSEE ExpPro"
Sheets(FeuilleRES).Cells(j, 23) = "Type ExpPro"
Sheets(FeuilleRES).Cells(j, 25) = "Durée Max"
Sheets(FeuilleRES).Cells(j, 26) = "Durée Max en mois"
Sheets(FeuilleRES).Cells(j, 27) = "Pays Durée Max"
Sheets(FeuilleRES).Cells(j, 28) = "Type Durée Max"
Sheets(FeuilleRES).Cells(j, 29) = "Erasmus"
j = 2
RupturNUMINS = "x"
Do While Sheets(FeuilleIMP).Cells(i, 1) <> ""
' Ajout CK
Code_Diplome_Sise = Sheets(FeuilleIMP).Cells(i, 40)
Erasmus = Sheets(FeuilleIMP).Cells(i, 41)
Regime = Sheets(FeuilleIMP).Cells(i, 42)
NUMINS = Sheets(FeuilleIMP).Cells(i, 1) & " " & Sheets(FeuilleIMP).Cells(i, 14)
IDETU = Sheets(FeuilleIMP).Cells(i, 2)
COMPOS = Sheets(FeuilleIMP).Cells(i, 3)
PRGM_CODE = Sheets(FeuilleIMP).Cells(i, 5)
PRGM_LIBL = Sheets(FeuilleIMP).Cells(i, 6)
MODEL_CODE = Sheets(FeuilleIMP).Cells(i, 7)
PRGM_EXED = Sheets(FeuilleIMP).Cells(i, 8)
Module_Code = Sheets(FeuilleIMP).Cells(i, 19)
Module_Type = Sheets(FeuilleIMP).Cells(i, 20)
Module_Pays = Sheets(FeuilleIMP).Cells(i, 21)
Module_Dure_Str = Replace(Sheets(FeuilleIMP).Cells(i, 22), ".", ",")
If Module_Dure_Str = "" Then
Module_Dure = 0
Else
Module_Dure = Module_Dure_Str * 1
End If
OutG_Type = Sheets(FeuilleIMP).Cells(i, 26)
OutG_Insee = Left(Sheets(FeuilleIMP).Cells(i, 27), 3)
OutG_Pays = Sheets(FeuilleIMP).Cells(i, 28)
OutG_Dure_Str = Replace(Sheets(FeuilleIMP).Cells(i, 25), ".", ",")
'If OutG_Dure_Str = "" Then
'OutG_Dure = 0
'Else
'OutG_Dure = CLng(OutG_Dure_Str) * 1
'End If
ExpPro_Type = Sheets(FeuilleIMP).Cells(i, 31)
ExpPro_Insee = Left(Sheets(FeuilleIMP).Cells(i, 38), 3)
ExpPro_Pays = Sheets(FeuilleIMP).Cells(i, 39)
ExpPro_Dure_Str = Sheets(FeuilleIMP).Cells(i, 37)
If ExpPro_Dure_Str = "" Then
ExpPro_Dure = 0
Else
' Correction dépassement de capacité - conversion au type Long
ExpPro_Dure = CLng(ExpPro_Dure_Str) * 1
End If
If RupturNUMINS = NUMINS Then
If Module_Code <> "" And Module_Pays <> "PARIS" And Module_Type = "SEM_CAMPUS" Then
If Module_Dure >= MaxCampus Then
MaxCampus = Module_Dure
PaysCampus = Module_Pays
End If
End If
If OutG_Type <> "" Then
If OutG_Dure >= MaxOut Then
MaxOut = OutG_Dure
PaysOut = OutG_Pays
InseeOut = OutG_Insee
TypeOut = OutG_Type
End If
End If
If ExpPro_Type <> "" Then
If ExpPro_Dure >= MaxExpPro Then
MaxExpPro = ExpPro_Dure
PaysExpPro = ExpPro_Pays
InseeExpPro = ExpPro_Insee
TypeExpPro = ExpPro_Type
End If
End If
Else
If PaysCampus = "LONDON" Then
PaysCampus = "Royaume-Uni"
InseeCampus = "132"
ElseIf PaysCampus = "BERLIN" Then
PaysCampus = "Allemagne"
InseeCampus = "109"
ElseIf PaysCampus = "MADRID" Then
PaysCampus = "Espagne"
InseeCampus = "134"
ElseIf PaysCampus = "TORINO" Then
PaysCampus = "Italie"
InseeCampus = "127"
End If
Sheets(FeuilleRES).Cells(j, 10) = MaxCampus
Sheets(FeuilleRES).Cells(j, 11) = PaysCampus
Sheets(FeuilleRES).Cells(j, 12) = InseeCampus
Sheets(FeuilleRES).Cells(j, 13) = "CAMPUS"
Sheets(FeuilleRES).Cells(j, 15) = MaxOut
Sheets(FeuilleRES).Cells(j, 16) = PaysOut
Sheets(FeuilleRES).Cells(j, 17) = InseeOut
Sheets(FeuilleRES).Cells(j, 18) = TypeOut
Sheets(FeuilleRES).Cells(j, 20) = MaxExpPro
Sheets(FeuilleRES).Cells(j, 21) = PaysExpPro
Sheets(FeuilleRES).Cells(j, 22) = InseeExpPro
Sheets(FeuilleRES).Cells(j, 23) = TypeExpPro
If MaxCampus > MaxOut Then
indice = 10
Else
indice = 15
End If
If Sheets(FeuilleRES).Cells(j, indice) < MaxExpPro Then
indice = 20
End If
Sheets(FeuilleRES).Cells(j, 25) = Sheets(FeuilleRES).Cells(j, indice)
Sheets(FeuilleRES).Cells(j, 26) = Sheets(FeuilleRES).Cells(j, indice) / 30
If Sheets(FeuilleRES).Cells(j, 26) >= 6 Then
DUREE_MOBCO = 3
ElseIf Sheets(FeuilleRES).Cells(j, 26) >= 3 Then
DUREE_MOBCO = 2
Else
DUREE_MOBCO = 1
End If
Sheets(FeuilleRES).Cells(j, 27) = Sheets(FeuilleRES).Cells(j, indice + 1)
Sheets(FeuilleRES).Cells(j, 28) = Sheets(FeuilleRES).Cells(j, indice + 3)
If Sheets(FeuilleRES).Cells(j, 25) <> 0 Then
Sheets(FeuilleRES).Cells(j, 5) = DUREE_MOBCO
' Ajout CK -> recodification CAMPUS / OUTGOING
'Sheets(FeuilleRES).Cells(j, 6) = Sheets(FeuilleRES).Cells(j, 28)
Select Case Sheets(FeuilleRES).Cells(j, 28)
Case "OUTGOING":
Sheets(FeuilleRES).Cells(j, 6) = "J"
Case Else: '"CAMPUS", "FRCONV", "CDI", "STAGE", "OTH", "ITCONV", "ESCONV", "VIE", "CDD":
Sheets(FeuilleRES).Cells(j, 6) = 0
End Select
' Erasmus
'Sheets(FeuilleRES).Cells(j, 9) = Sheets(FeuilleRES).Cells(j, 6) & " - " & Sheets(FeuilleRES).Cells(j, 29)
If Sheets(FeuilleRES).Cells(j, 6) = "J" And Sheets(FeuilleRES).Cells(j, 29) Then Sheets(FeuilleRES).Cells(j, 6) = "L"
Sheets(FeuilleRES).Cells(j, 7) = Sheets(FeuilleRES).Cells(j, indice + 2)
Else
Sheets(FeuilleRES).Cells(j, 5) = 9
End If
j = j + 1
MaxCampus = 0
PaysCampus = ""
InseeCampus = ""
MaxOut = 0
PaysOut = ""
InseeOut = ""
MaxExpPro = 0
PaysExpPro = ""
InseeExpPro = ""
TypeExpPro = ""
RupturNUMINS = NUMINS
Sheets(FeuilleRES).Cells(j, 1) = NUMINS
Sheets(FeuilleRES).Cells(j, 2) = IDETU
Sheets(FeuilleRES).Cells(j, 3) = COMPOS
Sheets(FeuilleRES).Cells(j, 4) = PRGM_CODE
'Ajout CK
Sheets(FeuilleRES).Cells(j, 8) = Code_Diplome_Sise
Sheets(FeuilleRES).Cells(j, 29) = Erasmus
Sheets(FeuilleRES).Cells(j, 9) = Regime
If Module_Code <> "" And Module_Pays <> "PARIS" And Module_Type = "SEM_CAMPUS" Then
MaxCampus = Module_Dure
PaysCampus = Module_Pays
End If
If OutG_Type <> "" Then
MaxOut = OutG_Dure
PaysOut = OutG_Pays
InseeOut = OutG_Insee
End If
If ExpPro_Type <> "" Then
MaxExpPro = ExpPro_Dure
PaysExpPro = ExpPro_Pays
InseeExpPro = ExpPro_Insee
End If
End If
i = i + 1
Loop
If PaysCampus = "LONDON" Then
PaysCampus = "Royaume-Uni"
ElseIf PaysCampus = "BERLIN" Then
PaysCampus = "Allemagne"
ElseIf PaysCampus = "MADRID" Then
PaysCampus = "Espagne"
ElseIf PaysCampus = "TORINO" Then
PaysCampus = "Italie"
End If
Sheets(FeuilleRES).Cells(j, 10) = MaxCampus
Sheets(FeuilleRES).Cells(j, 11) = PaysCampus
Sheets(FeuilleRES).Cells(j, 15) = MaxOut
Sheets(FeuilleRES).Cells(j, 16) = PaysOut
Sheets(FeuilleRES).Cells(j, 20) = MaxExpPro
Sheets(FeuilleRES).Cells(j, 21) = PaysExpPro
If MaxCampus > MaxOut Then
indice = 10
Else
indice = 15
End If
If Sheets(FeuilleRES).Cells(j, indice) < MaxExpPro Then
indice = 20
End If
Sheets(FeuilleRES).Cells(j, 25) = Sheets(FeuilleRES).Cells(j, indice)
Sheets(FeuilleRES).Cells(j, 26) = Sheets(FeuilleRES).Cells(j, indice) / 30
Sheets(FeuilleRES).Cells(j, 27) = Sheets(FeuilleRES).Cells(j, indice + 1)
Rows(2).EntireRow.Delete
MsgBox "Traitement terminé !"
End Sub
Après avoir appliquer vos réponses l'erreur persiste:
voici mon code intégrale:
Dim NUMINS As Variant, IDETU As Variant, COMPOS As String
Dim PRGM_CODE, PRGM_LIBL, MODEL_CODE, PRGM_EXED As String
Dim Module_Code, Module_Type, Module_Pays, Module_Dure_Str As String
Dim Module_Dure As Long
Dim OutG_Type, OutG_Dure_Str, OutG_Pays As String
Dim OutG_Dure As Long
Dim ExpPro_Type, ExpPro_Dure_Str, ExpPro_Pays As String
' Correction dépassement de capacité - Modif String par Long
Dim ExpPro_Dure As Long
FeuilleIMP = 1
FeuilleRES = 2
ExpPro_Dure_Str = ""
Sheets(FeuilleIMP).Range("A:DP").ClearContents
Sheets(FeuilleRES).Range("A:DP").ClearContents
i = 2
' COMPOS DIPLOM
Sheets(FeuilleRES).Activate
j = 1
Sheets(FeuilleRES).Cells(j, 1) = "NUMINS"
Sheets(FeuilleRES).Cells(j, 2) = "IDETU"
Sheets(FeuilleRES).Cells(j, 3) = "COMPOS"
Sheets(FeuilleRES).Cells(j, 4) = "DIPLOM"
Sheets(FeuilleRES).Cells(j, 5) = "DUREE_MOBPCO"
Sheets(FeuilleRES).Cells(j, 6) = "TYPE_MOBPCO"
Sheets(FeuilleRES).Cells(j, 7) = "PAYS_MOBPCO"
'Ajout CK
Sheets(FeuilleRES).Cells(j, 8) = "CODE_DIPLOME"
Sheets(FeuilleRES).Cells(j, 9) = "REGIME"
Sheets(FeuilleRES).Cells(j, 10) = "Durée Semestre Campus"
Sheets(FeuilleRES).Cells(j, 11) = "Pays Semestre Campus"
Sheets(FeuilleRES).Cells(j, 12) = "Pays INSEE Semestre Campus"
Sheets(FeuilleRES).Cells(j, 13) = "Type semestre"
Sheets(FeuilleRES).Cells(j, 15) = "Durée Outgoing"
Sheets(FeuilleRES).Cells(j, 16) = "Pays Outgoing"
Sheets(FeuilleRES).Cells(j, 17) = "Pays INSEE Outgoing"
Sheets(FeuilleRES).Cells(j, 18) = "Type événement"
Sheets(FeuilleRES).Cells(j, 20) = "Durée ExpPro"
Sheets(FeuilleRES).Cells(j, 21) = "Pays ExpPro"
Sheets(FeuilleRES).Cells(j, 22) = "Pays INSEE ExpPro"
Sheets(FeuilleRES).Cells(j, 23) = "Type ExpPro"
Sheets(FeuilleRES).Cells(j, 25) = "Durée Max"
Sheets(FeuilleRES).Cells(j, 26) = "Durée Max en mois"
Sheets(FeuilleRES).Cells(j, 27) = "Pays Durée Max"
Sheets(FeuilleRES).Cells(j, 28) = "Type Durée Max"
Sheets(FeuilleRES).Cells(j, 29) = "Erasmus"
j = 2
RupturNUMINS = "x"
Do While Sheets(FeuilleIMP).Cells(i, 1) <> ""
' Ajout CK
Code_Diplome_Sise = Sheets(FeuilleIMP).Cells(i, 40)
Erasmus = Sheets(FeuilleIMP).Cells(i, 41)
Regime = Sheets(FeuilleIMP).Cells(i, 42)
NUMINS = Sheets(FeuilleIMP).Cells(i, 1) & " " & Sheets(FeuilleIMP).Cells(i, 14)
IDETU = Sheets(FeuilleIMP).Cells(i, 2)
COMPOS = Sheets(FeuilleIMP).Cells(i, 3)
PRGM_CODE = Sheets(FeuilleIMP).Cells(i, 5)
PRGM_LIBL = Sheets(FeuilleIMP).Cells(i, 6)
MODEL_CODE = Sheets(FeuilleIMP).Cells(i, 7)
PRGM_EXED = Sheets(FeuilleIMP).Cells(i, 8)
Module_Code = Sheets(FeuilleIMP).Cells(i, 19)
Module_Type = Sheets(FeuilleIMP).Cells(i, 20)
Module_Pays = Sheets(FeuilleIMP).Cells(i, 21)
Module_Dure_Str = Replace(Sheets(FeuilleIMP).Cells(i, 22), ".", ",")
If Module_Dure_Str = "" Then
Module_Dure = 0
Else
Module_Dure = Module_Dure_Str * 1
End If
OutG_Type = Sheets(FeuilleIMP).Cells(i, 26)
OutG_Insee = Left(Sheets(FeuilleIMP).Cells(i, 27), 3)
OutG_Pays = Sheets(FeuilleIMP).Cells(i, 28)
OutG_Dure_Str = Replace(Sheets(FeuilleIMP).Cells(i, 25), ".", ",")
'If OutG_Dure_Str = "" Then
'OutG_Dure = 0
'Else
'OutG_Dure = CLng(OutG_Dure_Str) * 1
'End If
ExpPro_Type = Sheets(FeuilleIMP).Cells(i, 31)
ExpPro_Insee = Left(Sheets(FeuilleIMP).Cells(i, 38), 3)
ExpPro_Pays = Sheets(FeuilleIMP).Cells(i, 39)
ExpPro_Dure_Str = Sheets(FeuilleIMP).Cells(i, 37)
If ExpPro_Dure_Str = "" Then
ExpPro_Dure = 0
Else
' Correction dépassement de capacité - conversion au type Long
ExpPro_Dure = CLng(ExpPro_Dure_Str) * 1
End If
If RupturNUMINS = NUMINS Then
If Module_Code <> "" And Module_Pays <> "PARIS" And Module_Type = "SEM_CAMPUS" Then
If Module_Dure >= MaxCampus Then
MaxCampus = Module_Dure
PaysCampus = Module_Pays
End If
End If
If OutG_Type <> "" Then
If OutG_Dure >= MaxOut Then
MaxOut = OutG_Dure
PaysOut = OutG_Pays
InseeOut = OutG_Insee
TypeOut = OutG_Type
End If
End If
If ExpPro_Type <> "" Then
If ExpPro_Dure >= MaxExpPro Then
MaxExpPro = ExpPro_Dure
PaysExpPro = ExpPro_Pays
InseeExpPro = ExpPro_Insee
TypeExpPro = ExpPro_Type
End If
End If
Else
If PaysCampus = "LONDON" Then
PaysCampus = "Royaume-Uni"
InseeCampus = "132"
ElseIf PaysCampus = "BERLIN" Then
PaysCampus = "Allemagne"
InseeCampus = "109"
ElseIf PaysCampus = "MADRID" Then
PaysCampus = "Espagne"
InseeCampus = "134"
ElseIf PaysCampus = "TORINO" Then
PaysCampus = "Italie"
InseeCampus = "127"
End If
Sheets(FeuilleRES).Cells(j, 10) = MaxCampus
Sheets(FeuilleRES).Cells(j, 11) = PaysCampus
Sheets(FeuilleRES).Cells(j, 12) = InseeCampus
Sheets(FeuilleRES).Cells(j, 13) = "CAMPUS"
Sheets(FeuilleRES).Cells(j, 15) = MaxOut
Sheets(FeuilleRES).Cells(j, 16) = PaysOut
Sheets(FeuilleRES).Cells(j, 17) = InseeOut
Sheets(FeuilleRES).Cells(j, 18) = TypeOut
Sheets(FeuilleRES).Cells(j, 20) = MaxExpPro
Sheets(FeuilleRES).Cells(j, 21) = PaysExpPro
Sheets(FeuilleRES).Cells(j, 22) = InseeExpPro
Sheets(FeuilleRES).Cells(j, 23) = TypeExpPro
If MaxCampus > MaxOut Then
indice = 10
Else
indice = 15
End If
If Sheets(FeuilleRES).Cells(j, indice) < MaxExpPro Then
indice = 20
End If
Sheets(FeuilleRES).Cells(j, 25) = Sheets(FeuilleRES).Cells(j, indice)
Sheets(FeuilleRES).Cells(j, 26) = Sheets(FeuilleRES).Cells(j, indice) / 30
If Sheets(FeuilleRES).Cells(j, 26) >= 6 Then
DUREE_MOBCO = 3
ElseIf Sheets(FeuilleRES).Cells(j, 26) >= 3 Then
DUREE_MOBCO = 2
Else
DUREE_MOBCO = 1
End If
Sheets(FeuilleRES).Cells(j, 27) = Sheets(FeuilleRES).Cells(j, indice + 1)
Sheets(FeuilleRES).Cells(j, 28) = Sheets(FeuilleRES).Cells(j, indice + 3)
If Sheets(FeuilleRES).Cells(j, 25) <> 0 Then
Sheets(FeuilleRES).Cells(j, 5) = DUREE_MOBCO
' Ajout CK -> recodification CAMPUS / OUTGOING
'Sheets(FeuilleRES).Cells(j, 6) = Sheets(FeuilleRES).Cells(j, 28)
Select Case Sheets(FeuilleRES).Cells(j, 28)
Case "OUTGOING":
Sheets(FeuilleRES).Cells(j, 6) = "J"
Case Else: '"CAMPUS", "FRCONV", "CDI", "STAGE", "OTH", "ITCONV", "ESCONV", "VIE", "CDD":
Sheets(FeuilleRES).Cells(j, 6) = 0
End Select
' Erasmus
'Sheets(FeuilleRES).Cells(j, 9) = Sheets(FeuilleRES).Cells(j, 6) & " - " & Sheets(FeuilleRES).Cells(j, 29)
If Sheets(FeuilleRES).Cells(j, 6) = "J" And Sheets(FeuilleRES).Cells(j, 29) Then Sheets(FeuilleRES).Cells(j, 6) = "L"
Sheets(FeuilleRES).Cells(j, 7) = Sheets(FeuilleRES).Cells(j, indice + 2)
Else
Sheets(FeuilleRES).Cells(j, 5) = 9
End If
j = j + 1
MaxCampus = 0
PaysCampus = ""
InseeCampus = ""
MaxOut = 0
PaysOut = ""
InseeOut = ""
MaxExpPro = 0
PaysExpPro = ""
InseeExpPro = ""
TypeExpPro = ""
RupturNUMINS = NUMINS
Sheets(FeuilleRES).Cells(j, 1) = NUMINS
Sheets(FeuilleRES).Cells(j, 2) = IDETU
Sheets(FeuilleRES).Cells(j, 3) = COMPOS
Sheets(FeuilleRES).Cells(j, 4) = PRGM_CODE
'Ajout CK
Sheets(FeuilleRES).Cells(j, 8) = Code_Diplome_Sise
Sheets(FeuilleRES).Cells(j, 29) = Erasmus
Sheets(FeuilleRES).Cells(j, 9) = Regime
If Module_Code <> "" And Module_Pays <> "PARIS" And Module_Type = "SEM_CAMPUS" Then
MaxCampus = Module_Dure
PaysCampus = Module_Pays
End If
If OutG_Type <> "" Then
MaxOut = OutG_Dure
PaysOut = OutG_Pays
InseeOut = OutG_Insee
End If
If ExpPro_Type <> "" Then
MaxExpPro = ExpPro_Dure
PaysExpPro = ExpPro_Pays
InseeExpPro = ExpPro_Insee
End If
End If
i = i + 1
Loop
If PaysCampus = "LONDON" Then
PaysCampus = "Royaume-Uni"
ElseIf PaysCampus = "BERLIN" Then
PaysCampus = "Allemagne"
ElseIf PaysCampus = "MADRID" Then
PaysCampus = "Espagne"
ElseIf PaysCampus = "TORINO" Then
PaysCampus = "Italie"
End If
Sheets(FeuilleRES).Cells(j, 10) = MaxCampus
Sheets(FeuilleRES).Cells(j, 11) = PaysCampus
Sheets(FeuilleRES).Cells(j, 15) = MaxOut
Sheets(FeuilleRES).Cells(j, 16) = PaysOut
Sheets(FeuilleRES).Cells(j, 20) = MaxExpPro
Sheets(FeuilleRES).Cells(j, 21) = PaysExpPro
If MaxCampus > MaxOut Then
indice = 10
Else
indice = 15
End If
If Sheets(FeuilleRES).Cells(j, indice) < MaxExpPro Then
indice = 20
End If
Sheets(FeuilleRES).Cells(j, 25) = Sheets(FeuilleRES).Cells(j, indice)
Sheets(FeuilleRES).Cells(j, 26) = Sheets(FeuilleRES).Cells(j, indice) / 30
Sheets(FeuilleRES).Cells(j, 27) = Sheets(FeuilleRES).Cells(j, indice + 1)
Rows(2).EntireRow.Delete
MsgBox "Traitement terminé !"
End Sub
Bonjour,
Tu as déclaré Dim Module_Dure_Str as String
donc la ligne Module_Dure_Str * 1 n'a pas de sens, on ne peut pas faire une opération arithmétique sur une chaîne.
Il faut au préalable convertir la chaîne en nombre, pour autant que la chaîne soit convertible. Pour cela il faut utiliser la fonction Val()
Tu as déclaré Dim Module_Dure_Str as String
donc la ligne Module_Dure_Str * 1 n'a pas de sens, on ne peut pas faire une opération arithmétique sur une chaîne.
Il faut au préalable convertir la chaîne en nombre, pour autant que la chaîne soit convertible. Pour cela il faut utiliser la fonction Val()
If Module_Dure_Str = "" Then
Module_Dure = 0
Else
Module_Dure = Val(Module_Dure_Str) * 1
End If
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Pour éviter le problème, tu dois comprendre le principe de déclaration des variables et d'avoir le bon contenant pour le bon contenu.
Dans l'exemple suivant :
Truc pour bien percevoir le type de contenant versus le type de contenu
lors de la déclaration utiliser les 3 premiers caractères du nom de la variable pour définir le type de celle-ci.
Exemple :
Bonne continuité
Lupin
Pour éviter le problème, tu dois comprendre le principe de déclaration des variables et d'avoir le bon contenant pour le bon contenu.
Dans l'exemple suivant :
Sub test() Dim NbrVariant, NbrDouble As Double ' La définition qui précède signifie que NbrVariant est de Type Variant ' et que NbrDouble est de type double NbrVariant = "12,4" ' L'affectation qui précède affecte un type "double" dans un type variant ' donc le type de NbrVariant devient de type "double" NbrDouble = NbrVariant / 2 ' L'opération qui précède fonctionne bien puisque un type "double" ' NbrVariant (type modifé par l'instruction d'affectation) est divisé par 2 ' et le résultat est envoyé dans un variable de type "double" NbrVariant = "12.4" ' Ici on prépare une erreur de type mismatch car l'affectation envoie ' dans la variable une chaîne de caractère dans un type variant, ce ' type est alors modifié de devient un type string NbrDouble = NbrVariant / 2 ' Ici, se produit le type mismatch puisque NbrVariant est devenu un type ' string suite à l'affectation et on tente une opération mathématique sur ' un type string End Sub
Truc pour bien percevoir le type de contenant versus le type de contenu
lors de la déclaration utiliser les 3 premiers caractères du nom de la variable pour définir le type de celle-ci.
Exemple :
Dim DblNombre As Double Dim StrMessage As String Dim LngNombreEntier As Long Dim StrTexte As String, StrMarque As String ' Lors de déclaration de plusieurs variables sur un même ligne ' Sous VBA chaque variable doit être défini par son type Dim StrTexte, StrMarque As String ' Cette déclaration spécifie implicitement que Dim StrTexte As Variant, StrMarque As String ' Ce qui amène les erreurs de type mismatch lorsque l'on ne connaît ' pas bien nos variables ou les Types Variant qui peuvent recevoir ' n'importe quel contenu lors d'une affectation en prenant le type ' défini par le contenu
Bonne continuité
Lupin