Ne pas confondre les nombres

Bonjour, j'ai un petit soucis que je n'arrive pas à résoudre. J'essaye de lire des titres de dossier avec des numéros sauf que lorsque je rentre 90, Excel lit aussi 90 dans 900, par exemple quand je vais mettre 90 et 121 il va me prendre 90,120,900 et 1210. Je sais que la ligne à modifier est celle-ci :

If rep Like dossierracine & "N°" & Format(J) & "*" Then

mais j'ai beaucoup de mal avec la fonction "format". Les noms sont de type "N°90-bidule" ou encore N°1141-machin"

Merci de votre aide.

Bonjour,

Dans ce cas pourquoi ne pas chercher le numéro exact avec le tirer via :

J = "N°1141-bidule"
If rep Like dossierracine & "N°" & Then Mid(J, 3, InStr(1, J, "-") - 2) & "*" Then 'Remplace Format(J)

Cdlt,

Bonjour,

Merci pour votre réponse, mais "Then mid" engendre une erreur

et J est deja définie dans une boucle il prend toute les valeurs comprise entre D1 et D2 une plage définie auparavant

Cdt,

Bonjour,

Autant pour moi erreur d’inattention je pense :

If rep Like dossierracine & "N°" & Mid(J, 3, InStr(1, J, "-") - 2) & "*" Then 'Remplace Format(J)

Mid(J, 3, InStr(1, J, "-") - 2) & "*" renvoie par exemple avec le code "N°1141-bidule" 1141- donc la recherche se fera sur dossierracine & N°1141- & *. A adapter à votre code.

Cdlt,

Bonjours,

De ce que j'en ai compris !I

If rep Like dossierracine & "N°" & J & "-*" Then

Navré, je ne comprends pas tellement, je met le code en entier si ça peut aider

cdt,

Sub test()

    Dim rng As Range, cellule As Range
    Dim tabdossier(1 To 2000)
    Set rng = Range("B1: M1")

    With Sheets("Dossier") ' nom de la feuille sur laquelle chercher l'info
     k = 4
     For Each Adresse In rng

        dossierracine = Adresse
        textsousdossier = .Range("B3")

        textsousdossier = Split(textsousdossier, ",")

' on remplit un tableau avec tous les répertoires se trouvant sous le répertoire racine
        nd = Dir(dossierracine, vbDirectory)
        Do While nd <> ""
            ctrd = ctrd + 1
            tabdossier(ctrd) = dossierracine & nd
            nd = Dir()
        Loop

'on sélectionne les répertoires qui correspondent aux numéros
        For i = LBound(textsousdossier) To UBound(textsousdossier)
            If InStr(textsousdossier(i), "-") > 0 Then
                Dossier = Split(textsousdossier(i), "-")
                d1 = Dossier(0)
                d2 = Dossier(1)
            Else
                d1 = textsousdossier(i)
                d2 = d1
            End If
            For J = d1 To d2
                For D = 1 To ctrd
                    rep = tabdossier(D)
                     If rep Like dossierracine & "N°" & Mid(J, 3, InStr(1, J, "-") - 2) & "*" Then 'Remplace Format(J)
                        nf = Dir(rep & "\RC H*" & "*.xls") ' on vérifie si le fichier contenant ces caractères est présent dans ce répertoire
                        If nf <> "" Then
                            k = k + 1
                            .Cells(k, 1) = rep & "\" & nf ' on affiche le chemin complet du fichier
                            Exit For
                        End If
                        End If
                    Next D
            Next J
        Next i
    Next Adresse
    End With

End Sub

Merci dysorthographie pour ta réponse mais ça ne fonctionne pas il n'y a pas d'erreur mais rien n'est renvoyé

Bonjour,

Lors de l’exécution de votre code que vous renvoie l'expression suivante :

Format(J)

Car je n'ai pas l'impression, au vu de votre code, que J correspond à ce que vous décrivez dans votre premier message. Je ne pense pas pouvoir faire grand chose car je ne comprend pas.

Cdlt,

Pour chaque valeur de J la macro renvoie un lien de fichier auquel est attribué un numéro qui est celui du dossier dans lequel le fichier est placé, donc si je prends une plage de 90 à 120, J va prendre chaque valeur de cette plage, le problème est que la macro balaye tout les dossiers et donc lit 90 91.. dans 900 910...

donc elle renvoie les dossiers 90 jusqu'à 120 mais aussi 900 910 920 930 jusqu'à 1120, j'espère que ces explications aideront

je cherche donc à mettre en forme la ligne que j'ai montré précédemment pour qu'elle lise que dans les dossiers demandés

Merci beaucoup pour votre attention

Cdt,

bonjour,

d'après les infos que tu as mises, le code de dysorthographie devrait convenir.

il sélectionne les sous-dossiers d'un répertoire donné qui ont le format N°<le numéro>-<n'importe quelle séquence de caractères>

Vérifie s'il ne faut pas ajouter des espaces par exemple.

sinon met une copie des noms de répertoire et de fichiers, qu'on voie à quoi cela ressemble.

Bonjour,

son code ne renvoie rien malheureusement, voici le nom d'un dossier type N°1118-AG64757-000 FG381691-G

Bonjour,

j'ai testé chez moi avec le répertoire tel que tu l'as mis et je te confirme que cela fonctionne (vérifie aussi le filtre pour le nom de fichier).

12dignis.xlsm (17.06 Ko)

Dans le fichier tu as mis:

If rep Like dossierracine & "N°" & j & "*" Then 

Cela fonctionne, ce qui fonctionne pas c'est avec "-*" à la place de "*" mais ce que je disais c'est que si je mets une plage de 90 à 120 ça va me prendre aussi les dossiers comportant ces chiffres c'est à dire 900 910 920 1118....

Bonjour,

Du coup j'imagine qu'il faudra vérifier que les 2 + len(j) caractères de gauche du nom du dossier soient égaux à "N°" & j ?

Bonjour,

Je ne comprends pas, si tu parles de vérifier la longueur de la chaine et de poser une condition pourquoi pas mais bon je pensais qu'il y avait un moyen juste en changeant la ligne vu précédemment avec la fonction format ou autre

merci pour vos réponse

Cdt,

Re,

Normal que tu n'aies pas compris, j'ai dit n'importe quoi... Ça ne changera rien du tout.

bonjour Dignis

Dans le fichier tu as mis:

If rep Like dossierracine & "N°" & j & "*" Then 

Cela fonctionne, ce qui fonctionne pas c'est avec "-*" à la place de "*" mais ce que je disais c'est que si je mets une plage de 90 à 120 ça va me prendre aussi les dossiers comportant ces chiffres c'est à dire 900 910 920 1118....

Chez moi cela fonctionne tout aussi bien avec "-*". vérifie que le caractère "-" est bien celui que tu as dans tes noms de répertoire

6dignis.xlsm (17.17 Ko)

OK je viens de comprendre le problème mais ça l'arrange pas, les premiers fichiers comportent un espace à la place du "-". Et je demandais les premiers fichiers dans ma plage, du coup je ne peux pas faire en fonction du "-" sinon je ne pourrai pas accéder aux premiers fichiers une solution?

bonjour,

essaie ceci

  If rep Like dossierracine & "N°" & j & "-*" Or rep Like dossierracine & "N°" & j & " *" Then 

Merci pour vos réponses j'ai finalement trouvé la solution j'ai posé une condition if pour régler le souci je vais quand même essayer ta ligne qui peut me faire gagner quelque ligne H2SO4! Encore merci

Rechercher des sujets similaires à "pas confondre nombres"