Sélection d'un classeur Excel et manipulation de ses feuilles
Bonjour à tous,
Je suis débutant en VBA Excel et mon souci est le suivant:
Je travaille sur une macro excel et j'aimerai qu'en cliquant sur le bouton "clients à relancer", l'utilisateur puisse sélectionner un autre classeur contenant les noms de plusieurs clients, suivant un modèle défini. Après avoir choisi le classeur, la macro doit parcourir la première colonne de celui-ci, dans laquelle se trouve les matricules des clients et les comparer avec ceux contenu dans un tableau.
Seuls les matricules ne figurant pas dans ledit tableau seraient donc ceux des clients à relancer...
Mon problème est que lorsque je clique sur le bouton, je sélectionne bel et bien le fichier de mon choix, mais je ne parviens pas à effectuer la comparaison décrite plus haut(D'une part c'est pcq je ne parviens pas dans mon code à récupérer le nom du classeur sélectionné). Merci d'avance
Le code est le suivant:
[CODE]
Private Sub Clients_à_relancer_Click()
Dim B As Object, F As Worksheet
Set B = Sheets("Feuil2")
Dim row1 As Integer, row2 As Integer, v1 As String, v2 As String, v3 As String, v4 As String, v5 As String
Dim tableau() As Variant, fichier As Variant
Dim var As Integer, row As Integer, l As Integer
var = Range("A1").End(xlDown).row
ReDim tableau(var - 2)
For i = 0 To var - 3
tableau(i) = Range("A" & i + 3).Value
Next i
'Affiche la boîte de dialogue "Ouvrir"
fichier = Application.GetOpenFilename("Fichiers Excel (*.xls; *.xlsm),*.xls;*.xlsm")
'On sort si aucun fichier n'a été sélectionné ou si l'utilisateur
'a cliqué sur le bouton "Annuler", ou sur la croix de fermeture.
If fichier = False Then Exit Sub
Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Clients à relancer"
Workbooks.Open (fichier)
Set F = ActiveWorkbook.Worksheets("Feuil1")
While (F.Cells(row1, 1) <> "")
For i = 0 To var - 3
If F.Cells(row1, 1) = tableau(i) Then
F.Activate
v1 = ActiveSheet.Cells(row1, 1)
v2 = ActiveSheet.Cells(row1, 2)
v3 = ActiveSheet.Cells(row1, 3)
v4 = ActiveSheet.Cells(row1, 7)
v5 = ActiveSheet.Cells(row1, 9)
Sheets("Clients à relancer").Activate
ActiveSheet.Cells(row2, 1) = v1
ActiveSheet.Cells(row2, 2) = v2
ActiveSheet.Cells(row2, 3) = v3
ActiveSheet.Cells(row2, 4) = v4
ActiveSheet.Cells(row2, 6) = v5
row2 = row2 + 1
End If
Next i
row1 = row1 + 1
Wend
End Sub
[ /CODE]
Bonjour Menguef
Merci d'éditer ton post et de mettre ton code entre le balises [ CODE] et [ /CODE] (sans espace après le "[")
Sinon, il faut définir une variable pour le classeur
Dim Wbk as WorkbookEt ensuite
Set Wbk = Workbooks.Open(fichier)
Set F = Wbk.Sheets("Feuil1")Tu pourras manipuler ton classeur et la feuille comme tu veux par la suite
@+
[quote=BrunoM45 post_id=868008 time=1588935410 user_id=15789]
Bonjour Menguef
Merci d'éditer ton post et de mettre ton code entre le balises [ CODE] et [ /CODE] (sans espace après le "[")
Sinon, il faut définir une variable pour le classeur
Dim Wbk as WorkbookEt ensuite
Set Wbk = Workbooks.Open(fichier)
Set F = Wbk.Sheets("Feuil1")Tu pourras manipuler ton classeur et la feuille comme tu veux par la suite
@+
[/quote]
Ok merci Bruno
Problème résolu, Merci encore