Changer le type d'une variable au cours d'un code
Résolu
siamens_duj
Messages postés
212
Statut
Membre
-
siamens_duj -
siamens_duj -
Bonjour,
J'ai un petit soucis, je suis coincé sur mon code depuis presque 3 jours sans avoir trouvé de solution.
Je vous explique :
Je fais sur excel une recherche qui met le résultat dans une cellule.
Cette cellule est de format de type standard, si tout se passe bien et que la recherche aboutit, je n'ai pas d'erreur. Mais si la recherche n'aboutit pas j'au une erreur d'exécution 13 "incompatibilité de type" et me surligne : NomDuFichier = Range("I1").Value
NomDuFichier est de type string. J'ai essayé de changer le type en Variant mais là c'est la ligne chemin= chemin & NomDuFichier & " .docx " qui est surligné (ce code trouve le fichier à ouvrir dans mon dossier) .
J aimerais donc changer le type de la variable NomDuFichier dans ma condition "si il n y a pas de résultat alors msgbox "fin" else changer le format de NomDuFichier en string" et mettre le type NomDuFichier as Variant au début de mon code. Seul problème, je n'arrive pas à le faire ...
Si quelqu'un pouvait m'aider svp ...
J'ai un petit soucis, je suis coincé sur mon code depuis presque 3 jours sans avoir trouvé de solution.
Je vous explique :
Je fais sur excel une recherche qui met le résultat dans une cellule.
Cette cellule est de format de type standard, si tout se passe bien et que la recherche aboutit, je n'ai pas d'erreur. Mais si la recherche n'aboutit pas j'au une erreur d'exécution 13 "incompatibilité de type" et me surligne : NomDuFichier = Range("I1").Value
NomDuFichier est de type string. J'ai essayé de changer le type en Variant mais là c'est la ligne chemin= chemin & NomDuFichier & " .docx " qui est surligné (ce code trouve le fichier à ouvrir dans mon dossier) .
J aimerais donc changer le type de la variable NomDuFichier dans ma condition "si il n y a pas de résultat alors msgbox "fin" else changer le format de NomDuFichier en string" et mettre le type NomDuFichier as Variant au début de mon code. Seul problème, je n'arrive pas à le faire ...
Si quelqu'un pouvait m'aider svp ...
A voir également:
- Changer le type d'une variable au cours d'un code
- Changer dns - Guide
- Code ascii - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Changer le code pin - Guide
- Code puk bloqué - Guide
5 réponses
Bonjour,
Code restructure et test d'erreur sur cellule I1. Par contre comprends pas le test
deuxieme possibilite en modifiant la formule:
Code restructure et test d'erreur sur cellule I1. Par contre comprends pas le test
res2 = Num_confcar res2 prend la valeur de Num_conf !!
Sub Confirmation() Dim NomDuFichier As String Dim res2 As String If Num_conf <> "Fin" Then Sheets("Confirmation").Select Range("A1").Select 'Se positionne sur la cellule A1 res2 = Num_conf Range("H1").Value = res2 'La cellule H1 affiche le numéro de confirmation, soit ce qui a été scanné en deuxième étape 'Conversion de données Range("H1").Select Selection.TextToColumns Destination:=Range("H1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _ Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _ :=Array(1, 1), TrailingMinusNumbers:=True Range("I1").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],RC[-6]:R[852]C[-5],2,FALSE)" 'test si pas d'erreur fomule "I1" If Not (IsError(Range("I1"))) And res2 = Num_conf Then 'Si ce qui est entré dans la 2nd inputBox est different des num de confirmation dans la colonne C alors NomDuFichier = Range("I1") Dim Chemin As String Chemin = "D:\Users\lala\Documents\doc\" Chemin = Chemin & NomDuFichier & ".docx" Set appwd = CreateObject("Word.Application") With appwd .WordBasic.DisableAutoMacros 1 '0 pour activer .Visible = True .Documents.Open Chemin .Activate End With Else MsgBox "Fin, pas de nom de fichier" End If End If End Sub
deuxieme possibilite en modifiant la formule:
ActiveCell.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-1],RC[-6]:R[852]C[-5],2,FALSE)),"""",VLOOKUP(RC[-1],RC[-6]:R[852]C[-5],2,FALSE))" If Range("I1") <> "" And res2 = Num_conf Then 'Si ce qui est entré dans la 2nd inputBox est different des num de confirmation dans la colonne C alors
Bonjour,
Il faudrait nous montrer tout le code réalisé et qui ne fonction ne pas.
A priori, je ne vois pas pourquoi NomDuFichier as Variant ne fonctionnerai pas. A mon sens, il y a une autre erreur.
Par exemple : " .docx " normalement il ne doit pas y avoir d'espace.
Sinon, pour changer le type d'une variable, tu peux faire :
Mais je persiste à penser qu'il y a d'autres erreurs.
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
Il faudrait nous montrer tout le code réalisé et qui ne fonction ne pas.
A priori, je ne vois pas pourquoi NomDuFichier as Variant ne fonctionnerai pas. A mon sens, il y a une autre erreur.
Par exemple : " .docx " normalement il ne doit pas y avoir d'espace.
Sinon, pour changer le type d'une variable, tu peux faire :
Dim NomDuFichier as Variant, NomFic As String NomDuFichier = Range("I1").Value NomFic = CStr(NomDuFichier) 'transforme en String chemin= chemin & NomFic & ".docx"
Mais je persiste à penser qu'il y a d'autres erreurs.
Avant, j'arrivais jamais à finir mes phrases... mais maintenant je
Bonjour,
Pas possible de changer la declaration d'une variable en dynamique
Declarez NomDuFichier en variant des le debut, ca m'etonnerait que cela vienne de la declaration en string!!!
Montrez le code complet de recherche et affectation
Pas possible de changer la declaration d'une variable en dynamique
Declarez NomDuFichier en variant des le debut, ca m'etonnerait que cela vienne de la declaration en string!!!
Montrez le code complet de recherche et affectation
Bonjour à tous,
Pour éviter un bug si le fichier n'existe pas:
voir aussi si chemin se termine par \
Pour éviter un bug si le fichier n'existe pas:
If NomDuFichier <> "" Then MsgBox "LeFichier Existe" 'mettre le code correspondant à la place Else MsgBox "LeFichier n'existe pas" Exit Sub End If
voir aussi si chemin se termine par \
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionSub Confirmation()
Dim NomDuFichier As Variant, NomFic As String
Dim res2 As String
If Num_conf <> "Fin" Then
Sheets("Confirmation").Select
Range("A1").Select 'Se positionne sur la cellule A1
res2 = Num_conf
Range("H1").Value = res2 'La cellule H1 affiche le numéro de confirmation, soit ce qui a été scanné en deuxième étape
'Conversion de données
Range("H1").Select
Selection.TextToColumns Destination:=Range("H1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Range("I1").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],RC[-6]:R[852]C[-5],2,FALSE)"
If res2 <> Num_conf Then 'Si ce qui est entré dans la 2nd inputBox est different des num de confirmation dans la colonne C alors
MsgBox ("fin")
GoTo fin
Else: GoTo suite
End If
suite:
NomDuFichier = Range("I1").Value
NomFic = CStr(NomDuFichier) 'Transforme en string
Dim Chemin As String
Chemin = "D:\Users\lala\Documents\doc\"
Chemin = Chemin & NomDuFichier & ".docx"
Set appwd = CreateObject("Word.Application")
With appwd
.WordBasic.DisableAutoMacros 1 '0 pour activer
.Visible = True
.Documents.Open Chemin
.Activate
End With
fin:
End If
End sub
J'ai commencé à faire le code mais je suis bloqué ...