Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème if ou while?

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

titiborregan5

XLDnaute Accro
Bonjour à tous,
je galère depuis quelques temps sur un problème qui ne m'a pas l'air sorcier mais auquel je ne parviens pas à trouver de solution.

J'aimerais que se crée en B1 le nom : " 20 avril 2010(date du jour) Résultats 1" ce qui correspondrait au nom de mon fichier à chercher.
Faire un if dir (chemin & nom & ".xls") <> "" then
Et c'est là que ça se complique!

Si le classeur existe déjà, créer en B2 20 avril 2010 Résultats 2 et vérifier à nouveau si ça existe! Si oui passer au 3 et ainsi de suite jusqu'à trouver le n suivant le dernier classeur enregistré!


J'espère avoir été clair dans mon explication???
je ne sais pas du tout comment écrire la syntaxe donc je vous mets mon fichier joint qui est plus qu'un début mais qui vous permettra peut-être de mieux cerner mon problème

Merci d'avance et n'hésitez surtout si vous avez des questions!!

Tibo
 

Pièces jointes

Re : Problème if ou while?

Bonjour le fil et le forum,
essais ceci :
Private Sub CommandButton1_Click()
Dim LeChemin, J%
Dim Dossier As Object, Fichier As Object
LeChemin = "C:\Documents and Settings\spreux-t\Mes documents\Portail intranet\Etudes et stats\"
'Définition de la variable
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(LeChemin)
' Boucle sur les fichiers
J = 1
For Each Fichier In Dossier.Files
If Fichier.Name = Format(Date, "dd mmmm yyyy") & " Résultats " & J Then
J = J + 1
Else: Exit For
End If
Next
MsgBox "Le n° suivant est " & J , vbOKOnly
End Sub
(non testé)
Bon courage et à +
Denis
 
Dernière modification par un modérateur:
Re : Problème if ou while?

Bonjour Denis, Kjin, le forum.

merci pour vos réponses.
A Kjin:
En fait je vais récupérer sur l'intranet un fichier au format csv pour lequel je dois changer le nom.
Ce que je souhaite c'est que le nom soit de la forme "date du jour Résultats version".
En effet il se peut que le fichier soit téléchargé 20 fois comme une seule (voire 0) et donc il faut que le numéro de la version change.
N'étant pas capable de programmer tout d'un coup je souhaitais procéder par étape et donc que le nom s'affiche dans une case pour être sûr que ce soit le bon.

A Denis:
Merci pour le code. J'ai toutefois l'impression que l'incrémentation ne se fait pas (passer du 1 au 2 ou du 2 au 3 etc...).
Peut-être que je n'ai pas tout compris à ton code, ce qui est fort propable...😱

Encore merci pour vos réponses postées, et les futures

Tibo
 
Re : Problème if ou while?

re,
Aie, le pire c'est que j'essaie d'expliquer le plus clairement possible!!! Peut être que ce que je pense être la solution et qui est donc le titre, est complètement absurde et donc je m'explique mal!!!

Je retente, faut pas désespérer!!
Je dois donner un nom à un classeur excel!
Pour savoir comment je vais l'appeler (pour pas qu'il y ait 2 fois le même), je souhaite qu'il soit de la forme suivante: date du jour "Résultats" Version
où date et version sont des variables et résultats du texte brut.
Donc si le fichier "20 avril 2010 Résultats 1" n'existe pas dans mon répertoire chemin, le fichier prendra ce nom là. S'il existe déjà, il prendra le nom "20 avril 2010 Résultats 2", à condition que celui-ci ne soit déjà pris... Ainsi, s'il y a n versions pour aujourd'hui, donc le dernier fichier s'appelle "20 avril 2010 Résultats n", si j'en enregistre un nouveau il devra s'appeler "20 avril 2010 Résultats n+1"

Là je souhaite écrire le 1er nom disponible dans une cellule pour "vérifier"!
J'arrive à lui dire que si le "20 avril 2010 Résultats 1" existe il écrive "20 avril 2010 Résultats 2" par contre, je ne sais pas comment vérifier à nouveau si le "20 avril 2010 Résultats 2" existe et qu'il écrive "20 avril 2010 Résultats 3", etc...

En gros j'arrive à faire mon if une seule fois, mais après je bloque!!!


J'espère m'être amélioré (pouvait on faire pire??) dans l'explication du cas, et que c'est devenu compréhensible.

Merci de persister malgré cela
Tibo
 
Re : Problème if ou while?

Re bonjour le fil
pour ma part je pense que ce que je t'ai passé doit convenir.
J'ai seulement oublié de mettre J = 1 avant la boucle.
Le principe en est que l'on cherche le n°1. Si on le trouve on ajoute 1 à J.
On cherche le suivant, etc.
Si pas de résultat, on sort de la boucle, le numéro suivant est donc J
PS : n'oublie pas l'extension .xls donc cette ligne à modifier comme suit
If Fichier.Name = Format(Date, "dd mmmm yyyy") & " Résultats " & J & ".xls" Then

Bon courage et à +
Denis
 
Dernière modification par un modérateur:
Re : Problème if ou while?

Re Denis,
ce qui devrait me donner ça ?
Code:
Private Sub CommandButton1_Click()
Dim LeChemin, J%
Dim Dossier As Object, Fichier As Object
LeChemin = "C:\Documents and Settings\spreux-t\Mes documents\Portail intranet\Etudes et stats\"
'Définition de la variable
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(LeChemin)
J = 1
' Boucle sur les fichiers
For Each Fichier In Dossier.Files
If Fichier.Name = Format(Date, "dd mmmm yyyy") & " Résultats " & J Then
J = J + 1
Else: Exit For
End If
Next
MsgBox "Le n° suivant est " & J + 1, vbOKOnly
End Sub
Donc la msgbox d'affiche, mais en m'indiquant le chiffre 2, peu importe si le fichier existe ou pas.

Peut-être n'ai-je pas mis le J=1 au bon endroit?

Merci

Tibo
 
Re : Problème if ou while?

Re Tibo,
le dossier 1 existe t'il ?
et comme je t'ai dit, n'oublie pas l'extension.
Relit mon dernier message que j'ai modifié après coup!
et ici pas de +1 car on n'a pas trouvé ce J : MsgBox "Le n° suivant est " & J , vbOKOnly
à +
Denis
 
Re : Problème if ou while?

Ah ok, je n'avais pas eu le temps de voir la modif de ton message précédent.
J'essaie avec l'extension, je ne l'avais pas vérifié alors que j'ai fait l'erreur ya qq heures.
Je te tiens au courant
merci

Tibo
Edit:
J'ai rajouté l'extension et remplacer dans le msgbox J+1 par J en me rendant compte que j'avais une différence de 2...

Ta phrase
Et ici pas de +1...
vient seulement de prendre du sens pour moi...

Encore merci je devrais pouvoir avancer désormais...

Merci au forum toujours aussi efficace!!
 
Dernière édition:
Re : Problème if ou while?

Bonsoir,
C'est quand même bien plus clair.
La macro ci dessous alimente un tableau avec les numéros des fichiers trouvés, puis le trie et renvoie le plus grand nombre trouvé augmenté de 1.
Code:
Option Explicit
Private Sub CommandButton1_Click()
Dim fs As Object, Dossier As Object, Fichier As Object
Dim sDat As String, Rep As String, nFich As String, Num As String
Dim tablo() As Variant
Dim x%, i%, J%, k%, t%
sDat = Format(Date, "dd mmmm yyyy")
Rep = "C:\Documents and Settings\spreux-t\Mes documents\Portail intranet\Etudes et stats"
Set fs = CreateObject("Scripting.FileSystemObject")
Set Dossier = fs.GetFolder(Rep)
For Each Fichier In Dossier.Files
    nFich = fs.GetBaseName(Fichier)
    If nFich Like sDat & "*Résultats*" Then
        Num = Mid(nFich, Len(sDat) + 11, Len(nFich))
        If IsNumeric(Num) Then
            x = x + 1
            ReDim Preserve tablo(1 To x)
            tablo(x) = CInt(Num)
        End If
    End If
Next
For i = 1 To UBound(tablo)
J = i
    For k = J + 1 To UBound(tablo)
        If tablo(k) < tablo(J) Then J = k
    Next k
    If i <> J Then
    t = tablo(J): tablo(J) = tablo(i): tablo(i) = t
    End If
Next i
MsgBox tablo(UBound(tablo)) + 1

End Sub
A+
kjin
 
Dernière édition:
Re : Problème if ou while?

Salut Kjin, je viens de voir ton message... désolé pour le retard!!
J'avais trouvé avec l'aide de Denis, mais merci d'avoir pris le temps de me répondre!!

Encore merci à tous et au forum
Tibo
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
879
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…