Dire var1 = var2 + 2 caracteres
Résolu
siamens_duj
Messages postés
192
Date d'inscription
Statut
Membre
Dernière intervention
-
siamens_duj -
siamens_duj -
Bonjour,
Je suis en train de coder une petite condition mais me voilà face à un problème.
J'ai une variable Name qui récupère ce que j'ai entré dans une inputbox et j ai une variable file qui est égale à Dir (Chemin & "\*" & ".docx")
Je voudrais dire
Si file commence comme name + 2 caractères alors msgbox "trouvé" sinon msgbox "pas trouvé"
J ai donc codé
If file like Name & "*" & "*" then
Msgbox "trouvé"
Else
Msgbox "pas trouvé"
Je suis sur du nom du fichier que je rentre dans mon inputbox et pourtant j ai à chaque fois "pas trouvé"
Si quelqu'un pouvait m'aider svp.
Je suis en train de coder une petite condition mais me voilà face à un problème.
J'ai une variable Name qui récupère ce que j'ai entré dans une inputbox et j ai une variable file qui est égale à Dir (Chemin & "\*" & ".docx")
Je voudrais dire
Si file commence comme name + 2 caractères alors msgbox "trouvé" sinon msgbox "pas trouvé"
J ai donc codé
If file like Name & "*" & "*" then
Msgbox "trouvé"
Else
Msgbox "pas trouvé"
Je suis sur du nom du fichier que je rentre dans mon inputbox et pourtant j ai à chaque fois "pas trouvé"
Si quelqu'un pouvait m'aider svp.
A voir également:
- Dire var1 = var2 + 2 caracteres
- Supercopier 2 - Télécharger - Gestion de fichiers
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Caractères spéciaux mac - Guide
- Caracteres speciaux - Guide
4 réponses
Bonjour,
Que tu peux résumer en :
If Len(file) = Len(Name) + 2 Then 'si la longueur à deux caractères de + If Left(file, Len(file) - 2) = Name Then 'test l'équivalence MsgBox "trouvé" Else MsgBox " pas trouvé" End If Else MsgBox " pas trouvé" End If
Que tu peux résumer en :
If Len(file) = Len(Name) + 2 And Left(file, Len(file) - 2) = Name Then MsgBox "trouvé" Else MsgBox " pas trouvé" End If
Bonjour,
Une façon de résoudre ton problème:
Une façon de résoudre ton problème:
Sub test()
Dim file As String
Dim Name As String
'par exemple si
file = "toto" 'entrée inputbox
Name = "TOTOA1.DOCX" 'resultat de Dir *.docx
'comparaison
If InStr(UCase(Name), UCase(file)) = 1 Then
MsgBox "trouvé"
Else
MsgBox "pas trouvé"
End If
End Sub
Il te faut vérifier le contenu de tes variables file et name avant les tests.
Une fois que ces deux variables sont remplies, place un MsgBox dans le code pour les vérifier :
Donne nous le contenu exact de cette MsgBox.
Une fois que ces deux variables sont remplies, place un MsgBox dans le code pour les vérifier :
file = InputBox(blabla)
Name = Dir machin
MsgBox("file = " & file & VbCrlf & "Name = " & Name)
Donne nous le contenu exact de cette MsgBox.
J'ai fais ce que vous m'avez conseillé (Vous avez inversé file et Name)
J'ai fais : MsgBox("Name = " & Name & VbCrlf & "file = " & file)
Donc dans Name (ce que je rentre) j'ai bien le nom du fichier que j'ai tapé moins les deux derniers caractères et pour file il me met le nom d' un autre fichier .docx !
Quand je rentre blabla01 dans mon inputbox j'ai donc dans ma Msgbox :
Name : blabla
fiel : toto01.docx
Savez vous comment ça se fait ?
J'ai fais : MsgBox("Name = " & Name & VbCrlf & "file = " & file)
Donc dans Name (ce que je rentre) j'ai bien le nom du fichier que j'ai tapé moins les deux derniers caractères et pour file il me met le nom d' un autre fichier .docx !
Quand je rentre blabla01 dans mon inputbox j'ai donc dans ma Msgbox :
Name : blabla
fiel : toto01.docx
Savez vous comment ça se fait ?
Salut,
If file like Name & "??" Then
Mais je doute sur le test de la concaténation de la variable et des caractères joker.
If file like Name & "??" Then
Mais je doute sur le test de la concaténation de la variable et des caractères joker.
Sub Confirmation()
Dim res, res2 As String
Dim NomDuFichier As String 'NomDuFichier est ce qui est entré
'Test si on n'a pas renseigné "fin"
If Num_conf <> "fin" Then
'il faut maintenant trouver le numero de confirmation dans la feuille Confirmation
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").Value
Dim Name As String
Dim Chemin As String
Chemin = "D:\Users\lala\Documents\doc\" 'Chemin des fichiers
Dim file As String
file = Dir(Chemin & "*" & ".docx")
Name = Left(NomDuFichier, 11)
If InStr(UCase(Name), UCase(file)) = 1 Then
MsgBox "trouvé"
Else
MsgBox "pas trouvé"
End If
Else
MsgBox "Erreur : Vous n'êtes pas sur la fiche de démarrage"
End If
End If
Donc, comme tu le dis toi même, tu récupères le premier fichier.
Or, dans ton cas, je crois deviner que tu veux vérifier, dans tous les fichiers de ton répertoire chemin, si le fichier .docx que tu saisis dans ton InoutBox existe.
Si c'est cela, il te faut boucler sur tous les fichiers de ton répertoire.
Attention, ne lance pas cette macro si tu as 1000 fichiers dans le répertoire. Tu vas voir s'afficher 1000 MsgBox sinon...
Or, dans ton cas, je crois deviner que tu veux vérifier, dans tous les fichiers de ton répertoire chemin, si le fichier .docx que tu saisis dans ton InoutBox existe.
Si c'est cela, il te faut boucler sur tous les fichiers de ton répertoire.
Dim file As String file = Dir(Chemin & "*" & ".docx") Name = Left(NomDuFichier, 11) Do While file <> "" If InStr(UCase(Name), UCase(file)) = 1 Then MsgBox "trouvé" Else MsgBox "pas trouvé" End If file = Dir() Loop
Attention, ne lance pas cette macro si tu as 1000 fichiers dans le répertoire. Tu vas voir s'afficher 1000 MsgBox sinon...
si ça se trouve il veut tester l'existence de la valeur de Name dans le nom du fichier
Oui, d'ou le :
MsgBox file
MsgBox Name
Utiliser Dir (avec ??) ne me semble pas aberrant.
Dir("C:\SomeFil?.txt") would return SomeFile.txt est un exemple mentionné sur https://www.exceltrick.com/formulas_macros/vba-dir-function/