Appliquer une macro a un fichier ouvert par une macro
Bonjour à tous,
Je voudrais savoir comment appliquer une partie de ma macro à un fichier que j'ouvre avec une autre partie de ma macro.
Je m'explique:
J'ai un classeur "1489 Spec", une feuille "Spec VA" dans celle-ci je souhaiterais avoir une copie, d'une partie des données d'un autre classeur. Donc j'applique une macro pour aller chercher le classeur voulu avec
Application.Dialogs(xlDialogOpen).ShowLe classeur source se nomme "1489 Nomenclture" mais le 1489 n'est pas une constante. Le nom pourrais être aussi "2084 Nomenclature". Seul le mot "Nomenclature" est une constante.
Mais la partie suivante de ma macro, ne s'execute pas, je pense par ce que je ne déclare pas le classeur dans lequel elle doit copier les donnée, mais je ne sais pas si il est possible de dire par exemple: Workbook("XXX Nomenclature").Sheets("Feuil1").Range(".....") puis la suite de la macro.
Pouvez-vous m'aider? Me dire si ce que je demande ce fait, voici la partie de mon code:
If MsgBox("Avez-vous remplis des cellules en manuel?", vbYesNo, "Demande de confirmation") = vbNo Then
ChDrive "S"
ChDir "S:\XXX\XXX"
Application.Dialogs(xlDialogOpen).Show
'Application.GetOpenFilename
'stFile =
Dim c As Range, Plage As Range, Plage1 As Range, Result As Range
Set Plage = [color=#FF00FF]Workbook("XXX Nomenclature")[/color].Sheets("Feuil1").Range("A4:A" & Cells(Cells.Rows.Count, 1).End(xlUp))
Set Plage1 = Plage.Offset(, -5).Resize(, 6)
For Each c In Plage
If c.Value = "VA" Then
If Result Is Nothing Then
Set Result = Plage1.Rows(c.Row)
Else
Set Result = Union(Result, Plage1.Rows(c.Row))
End If
End If
Next c
If Not Result Is Nothing Then Result.Copy
End IfPersonne n'a d'idée?
Bonjour,
une solution peut être de récupérer le nom du classeur après son ouverture avec quelque chose du style :
MonClasseur = activeworkbook.nameEt dans la suite du code pour travailler sur ce classeur tu utilises :
workbooks(MonClasseur).sheets(...Est-ce une solution qui peut te convenir ?!
Dis moi,
RemBabar
Solution trouvé merci pour votre aides
Sub macopie()
Dim Wb As Workbook
If MsgBox("Avez-vous remplis des cellules en manuel?", vbYesNo, "Demande de confirmation") = vbNo Then
'ChDrive "S"
'ChDir "S:\XXX\XXX"
rep = Application.GetOpenFilename
If rep <> True Then
Set Wb = GetObject(rep) 'ouverture en invisible
With Wb.Sheets("Feuil1")
'le point indique que l'on indique l'onglet du fichier choisit
bas = .[A65000].End(3).Row
i = 5 'pour commencer en ligne 5
'on copie A-F en B-G de la feuille active
For lig = 4 To bas
If .Cells(lig, 1) = "VA" Then
'copie que des valeurs
Range("B" & i & ":H" & i).Value = .Range("A" & lig & ":G" & lig).Value
i = i + 1
End If
Next lig
End With
Wb.Close 'ferme le fichier
End If
End If
End Sub