Copie de donnée depuis autre classeur
Bonjour,
Je vous sollicite pour m'aider dans la rédaction d'une macro me permettant:
1- Ouvrir un MsgBox, le clique sur oui execute la macro, et le clique non stop la macro.
2- Si oui= ouvre une boite de dialogue permettant d'aller chercher un fichier excel, sans l'ouvir.
3- Dans ce fichier copier les lignes entre les colonne A et F dont les cellules de la colonne A contienne "VA"
4- Retour sur la feuille d’exécution de la macro, dans la cellule A6 coller les valeurs copiées
5- Mise en forme du fichier
J'ai trouvé, je pense, quelque morceaux de codes, mais je ne sais pas comment les assembler ni si ils sont utiles pour ce que je veux faire.
( 1 ) Celui-ci pour la MsgBox :
'Ouverture MsgBox confirmation de copie
MsgBox "Avez-vous remplis des celulles à la mains ?" & Chr(10) & _
"Si oui il y à un risque de desordonement des modifications" & Chr(10) & _
"Voulez-vous continuer ?", vbYesNo, "Demande de confirmation"
'Procédure si click sur Non
Case vbNo
'Procédure si click sur Oui
Case vbYes
End Select( 3 )Celui là pour la recherche de la valeur "VA" en colonne A, mais je ne sais pas comment aller sur le fichier source sans l'ouvrir.
Dim c As Range, Plage As Range, Plage1 As Range, Result As Range
Set Plage = Range("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( 4 ) Et la partie du collage, qui je pense fonctionne, mais il me manque le retour sur feuille :
Range("B6").ActiveSheet.PasteSpecial Paste:=xlPasteValuesPour la dernière partie de mise en forme je me débrouille.
Si vous pouvez me dire si ce que je veux faire est réalisable et si oui pouvez-vous m'aider a rédiger ma macro SVP.
Personne n'a d'idées?
Solution trouvé merci a tous pour votre aide
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