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
LoopVoila 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 ThenMerci 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()
LoopBonsoir,
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()
LoopMerci 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 SubDonc 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