Probleme if then else

Bonjour,

J'ai un petit soucis sur un code. Je voudrais qu'il reconnaisse le nom du classeur ouvert et que quand celui ci est selectionné et bien il ne fasse pas l'étape d'ouverture fermeture etc ...

Do While myFile <> ""
    Cells(c, 1) = myFile
    myFile = Dir()
    Cells(c, 5) = aa
    Cells(c, 6) = bonbon
    Worksheets("Feuil1").Range("B" & c).FormulaLocal = "=STXT(A" & c & ";1;9)"
    Worksheets("Feuil1").Range("c" & c).FormulaLocal = "=STXT(A" & c & ";10;20)"

    bonbon = myFile

If TypeName(bonbon) = ThisWorkbook.Name Then
GoTo boz

Else
    Worksheets("Feuil1").Range("d" & c).FormulaLocal = "='" & ThisWorkbook.Path & "\" & bonbon & "'!total"

    Application.ScreenUpdating = False
    Workbooks.Open Filename:=myPath & "\" & myFile
    ActiveWorkbook.Sheets("Feuil1").Range("A1") = ThisWorkbook.Sheets("Feuil1").Range("A1")

    ActiveWorkbook.Save
    ActiveWorkbook.Close
End If

boz:

    c = c + 1

Loop

Voila je pense que "ThisWorkbook.Name" doit renvoyé une variable et "TypeName()" doit renvoyer un texte donc quand il fait la comparaison ça ne marche jamais. Voila si il faut le reste du code je peux le poster aussi

Merci

Bonjour

A mon avis tu peux simplement faire ton test comme ceci, si myFile ne contient que le nom du fichier sans aucune indication de répertoire, ce qui devrait être le cas puisque myFile reçoit une valeur de la fonction dir()

If myFile = ThisWorkbook.Name Then

Merci beaucoup ! Ta vérification marche parfaitement! Et en plus j'avais le myfile=dir() qui était mal placé (je n'avais pas compris que c'était lui qui me faisait passer au fichier suivant) Merci encore

Le résultat

Do While myFile <> ""
    Cells(c, 1) = myFile
    Cells(c, 5) = aa
    Cells(c, 6) = bonbon
    Worksheets("Feuil1").Range("B" & c).FormulaLocal = "=STXT(A" & c & ";1;9)"
    Worksheets("Feuil1").Range("c" & c).FormulaLocal = "=STXT(A" & c & ";10;20)"
    bonbon = myFile

If myFile = ThisWorkbook.Name Then
GoTo boz

Else

    Worksheets("Feuil1").Range("d" & c).FormulaLocal = "='" & ThisWorkbook.Path & "\" & bonbon & "'!total"
    Application.ScreenUpdating = False
    Workbooks.Open Filename:=myPath & "\" & myFile
    ActiveWorkbook.Sheets("Feuil1").Range("A1") = ThisWorkbook.Sheets("Feuil1").Range("A1")

    ActiveWorkbook.Save
    ActiveWorkbook.Close
End If

boz:

    c = c + 1
    myFile = Dir()
Loop

Bonsoir,

content que tu aies trouvé une solution à ton problème.

je me permettrais 2 remarques cosmétiques

l'instruction bonbon=... n'est plus nécessaire

le goto n'est pas nécessaire

et ton extrait de code pourrait ressembler à ceci

Do While myFile <> ""
    Cells(c, 1) = myFile
    Cells(c, 5) = aa
    Cells(c, 6) = bonbon
    Worksheets("Feuil1").Range("B" & c).FormulaLocal = "=STXT(A" & c & ";1;9)"
    Worksheets("Feuil1").Range("c" & c).FormulaLocal = "=STXT(A" & c & ";10;20)"
If myFile <> ThisWorkbook.Name Then
    Worksheets("Feuil1").Range("d" & c).FormulaLocal = "='" & ThisWorkbook.Path & "\" & bonbon & "'!total"
    Application.ScreenUpdating = False
    Workbooks.Open Filename:=myPath & "\" & myFile
    ActiveWorkbook.Sheets("Feuil1").Range("A1") = ThisWorkbook.Sheets("Feuil1").Range("A1")
    ActiveWorkbook.Save
    ActiveWorkbook.Close
End If
    c = c + 1
    myFile = Dir()
Loop

Merci bien mais le "myFile <> ThisWorkbook.Name" ne fonctionne pas pour moi. Je vais rester sur le égal et après "then else".

Voici le code en entier, je sais qu'il reste pas mal d'optimisation à faire mais j'y vais petit à petit car sinon j'ai des bugs et ça ne marche plus

Sub Fichiers()
Application.ScreenUpdating = False
Dim myPath As String, myFile As String

myPath = ThisWorkbook.Path
aa = ThisWorkbook.Name

Cells(1, 1) = "Répertoire"
Cells(1, 2) = ThisWorkbook.Path
Cells(1, 5) = aa

c = 3
myFile = Dir(myPath & "\*.xls*")

Do While myFile <> ""
    bonbon = myFile
    Cells(c, 1) = myFile
    Cells(c, 6) = bonbon
    Worksheets("Feuil1").Range("B" & c).FormulaLocal = "=STXT(A" & c & ";1;9)"
    Worksheets("Feuil1").Range("c" & c).FormulaLocal = "=STXT(A" & c & ";10;20)"

If myFile = ThisWorkbook.Name Then
Else
    Worksheets("Feuil1").Range("d" & c).FormulaLocal = "='" & ThisWorkbook.Path & "\" & bonbon & "'!total"
    Application.ScreenUpdating = False
    Workbooks.Open Filename:=myPath & "\" & myFile
    ActiveWorkbook.Sheets("Feuil1").Range("A1") = ThisWorkbook.Sheets("Feuil1").Range("A1")
    ActiveWorkbook.Save
    ActiveWorkbook.Close
End If

    c = c + 1
    myFile = Dir()
Loop

Cells(c, 2) = "total"
Worksheets("Feuil1").Range("D" & c).FormulaLocal = "=somme(D3:D" & c - 1 & ")"

End Sub

Donc l'idée de la macro: il donne l'emplacement et le nom du fichier, il scanne les autres fichiers .xls*, il donne la valeur "total" dans chacun d'eux et après il fait le total des "total"

Il me reste à faire chercher le sous dossier "\location" et à scanner à l'identique les "total" : je vois déjà à peu près comment faire

Et j'aimerai un bouton qui va ouvrir aussi tout les autres classeur et qui va mettre le "total" la ou je veux (à droite d'une cellule ou il y a un texte avec écrit total) : je vais faire ça avec la recherche de texte et pareil je vois déjà à peu près le code grâce à l'enregistrement de macro

Pfiou c'est dur quand même VB excel faut bien s'accrocher pour y arriver. Je félicite ceux qui sont expert dans ce domaine

Rechercher des sujets similaires à "probleme then else"