Dire var1 = var2 + 2 caracteres
Résolu/Fermé
siamens_duj
Messages postés
191
Date d'inscription
vendredi 20 juin 2014
Statut
Membre
Dernière intervention
14 février 2019
-
17 déc. 2015 à 10:50
siamens_duj - 18 déc. 2015 à 13:25
siamens_duj - 18 déc. 2015 à 13:25
A voir également:
- Dire var1 = var2 + 2 caracteres
- Caractères ascii - Guide
- Caractères spéciaux symboles clavier - Guide
- 2 comptes whatsapp - Guide
- Caractères spéciaux - Guide
- Clavier mac caractères spéciaux - Guide
4 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
17 déc. 2015 à 11:06
17 déc. 2015 à 11:06
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
18 déc. 2015 à 07:21
18 déc. 2015 à 07:21
Bonjour Mosca,
Très bonne idée le UCase.
Par contre, dans ton exemple, cela fonctionne avec :
C'est pour cela qu'il faut ajouter un test sur la longueur de chaîne.
Très bonne idée le UCase.
Par contre, dans ton exemple, cela fonctionne avec :
file = "toto" 'entrée inputbox
Name = "TOTOA11245AZERTY.DOCX" 'resultat de Dir *.docx
C'est pour cela qu'il faut ajouter un test sur la longueur de chaîne.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
>
siamens_duj
Modifié par pijaku le 18/12/2015 à 08:23
Modifié par pijaku le 18/12/2015 à 08:23
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 ?
sipherion
Messages postés
1798
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
19 décembre 2016
285
17 déc. 2015 à 11:03
17 déc. 2015 à 11:03
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.
siamens_duj
Messages postés
191
Date d'inscription
vendredi 20 juin 2014
Statut
Membre
Dernière intervention
14 février 2019
7
17 déc. 2015 à 15:28
17 déc. 2015 à 15:28
En effet je commence à douter aussi. .
Merci tour de même pour votre réponse
Merci tour de même pour votre réponse
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
18 déc. 2015 à 08:38
18 déc. 2015 à 08:38
Essaie de placer un MsgBox comme indiqué plus haut, comme ceci :
Et donne nous EXACTEMENT le contenu du message...
file = Dir(Chemin & "*" & ".docx") Name = Left(NomDuFichier, 11) MsgBox "file = " & file & VbCrlf & "Name = " & Name
Et donne nous EXACTEMENT le contenu du message...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
>
siamens_duj
18 déc. 2015 à 08:47
18 déc. 2015 à 08:47
Ne rentre pas blabla01, fais un vrai test stp.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 744
>
siamens_duj
18 déc. 2015 à 09:02
18 déc. 2015 à 09:02
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...
Modifié par sipherion le 17/12/2015 à 11:14
17 déc. 2015 à 11:19
si ça se trouve il veut tester l'existence de la valeur de Name dans le nom du fichier
Oui, d'ou le :
17 déc. 2015 à 15:36
17 déc. 2015 à 15:52
17 déc. 2015 à 16:00
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/