1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
Sub A_inventaire_par_Boites_Dialogue_Test()
'Définition =======================
Dim nfref As String 'déclare la variable nfref (Nom du Fichier de REFérence)
Dim fref As Workbook 'déclare la variable fref (Fichier de REFérence)
Dim nfrech As String 'déclare la variable nfrech (Nom Fichier RECHerche)
Dim frech As Workbook 'déclare la variable frech (Fichier de RECHerche)
Dim noref As String 'déclare la variable noref (Nom Onglet de REFérence)
Dim oref As Object 'déclare la variable oref (Onglet de REFérence)
Dim norech As String 'déclare la variable norech (Nom Onglet de RECHerche)
Dim orech As Object 'déclare la variable orech (Onglet de RECHerche)
Dim colref As String 'déclare la variable colref (COLonne de REFérence)
Dim dlref As Integer 'déclare la variable dlref (Dernière Ligne de REFérence)
Dim colrech As String 'déclare la variable colrech (Colonne de RECHerche)
Dim dlrech As Integer 'déclare la variable dlrech (Dernière Ligne RECHerche)
Dim plref As Range 'déclare la variable plref (PLage de REFérence)
Dim plrech As Range 'déclare la variable plrech (PLage de RECHerche)
Dim cac As String 'déclare la variable cac (Colonne A Copier)
Dim cdst As String 'déclare la variable cdst (Colonne de DeSTination)
Dim r As Range 'déclare la variable r (Recherche)
Dim Cel As Range 'déclare la variable cel (CELlule)
Dim pa As String 'déclare la variable pa (Première Adresse)
'Attribution des variables ==============================
On Error GoTo ErreurFichier 'Si erreur de nom de classeur ou feuille : activation message d'erreur
nfref = InputBox("Nom du fichier de référence", "Référence") 'définit la variable nfref
If nfref = "" Then Exit Sub 'si boîte d'entrée non renseignée ou bouton "Annuler", sort de la procédure
Set fref = Workbooks(nfref & ".xls") 'définit le classeur fref
nfrech = InputBox("Nom du fichier de Recherche", "Recherche") 'définit la variable nfrech
If nfrech = "" Then Exit Sub 'si boîte d'entrée non renseignée ou bouton "Annuler", sort de la procédure
Set frech = Workbooks(nfrech & ".xls") 'définit le classeur frech
noref = InputBox("Nom de l'onglet de référence", "Référence") 'définit la variable noref
If noref = "" Then Exit Sub 'si boîte d'entrée non renseignée ou bouton "Annuler", sort de la procédure
Set oref = fref.Sheets(noref) 'définit l'onglet source oref du classeur source
norech = InputBox("Nom de l'onglet de recherche", "Recherche") 'définit la variable norech
If norech = "" Then Exit Sub 'si boîte d'entrée non renseignée ou bouton "Annuler", sort de la procédure
Set orech = frech.Sheets(norech) 'définit l'onglet orech du classeur cible
On Error GoTo 0 'annule la gestion des erreurs
colref = InputBox("Colonne de référence", "Référence") 'définit la variable colref
If colref = "" Then Exit Sub 'si boîte d'entrée non renseignée ou bouton "Annuler", sort de la procédure
dlref = oref.Cells(Application.Rows.Count, colref).End(xlUp).Row 'définit la dernière ligne éditée dlref de la colonne de référence colref
colrech = InputBox("Colonne de recherche", "Recherche")
If colrech = "" Then Exit Sub 'si boîte d'entrée non renseignée ou bouton "Annuler", sort de la procédure
dlrech = orech.Cells(Application.Rows.Count, colrech).End(xlUp).Row 'définit la dernière ligne éditée dlrech de la colonne de recherche colrech
Set plref = oref.Range(colref & "2:" & colref & dlref) 'définit la plage de référence plref
Set plrech = orech.Range(colrech & "2:" & colrech & dlrech) 'définit la plage de recherche plrech
cac = InputBox("Colonne de la cellule à copier", "Copier") 'définit la variable cac
cdst = InputBox("Colonne de destination", "Coller") 'définit la variable cdst
'Traitement =======================
For Each Cel In plref 'boucle sur toutes les cellules cel de la plage plref
If Cel.Value <> "" Then 'condition 1 : si Cel n'est pas vide
Set r = orech.Columns(colrech).Find(Cel.Value, , xlValues, xlWhole) 'définit la recherche r
If Not r Is Nothing Then 'condition 2 : si il existe au moins une occurrence trouvée
pa = r.Address 'définit l'adresse pa de la première occurrence trouvée
Do 'exécute
orech.Cells(r.Row, cac).Copy oref.Cells(Cel.Row, cdst)
Set r = orech.Columns(colrech).FindNext(r) 'redéfinit la recherche r (occurrence suivante)
Loop While Not r Is Nothing And r.Address <> pa 'boucle tant qu'il existe des occurrences ailleurs au'en pa
End If 'fin de la condition 2
End If 'fin de la condition 1
Next Cel 'Boucle sur cellule suivante
Exit Sub
ErreurFichier:
MsgBox "!Erreur de nom de classeur ou de feuille !"
End Sub |
Partager