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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
Sub A_inventaire_par_Boites_Dialogue_Test() ' Ne fonctionne pas, (en cours de modifs)
Rem -compare la cellule "A2" de la colonne "A" feuille "Essai" classeur "Inventaire-Essai.xls" avec toutes les cellules de la colonne "B" de la feuille "Recapitulatif" du classeur "1Emplacement"
'Si une valeur identique est trouvée: Remplacer le contenu de la cellule "3" (C) de la feuille Essai du classeur "Inventaire-Essai.xls"
'par le contenu de la cellule de la colonne "J" de la feuille "Recapitulatif" du classeur "1Emplacement" dont la valeur est la même.
'Sinon reprendre la comparaison a la cellule "A3" et ce jusqu'à la fin de la colonne "A"
'Travail sur 2 feuilles dans 2 classeurs différents)
'Choix des classeurs, des feuilles et des colonnes à comparer et à copier : par inputbox (ou par userform)
'Définition =======================
Dim Cel As Range, Cel_A As Range
Dim F_A As Worksheet, F_B As Worksheet
Dim Fi1 As String, Fi2 As String, F1 As String, F2 As String, C1 As String, C2 As String, D As String, A As String
Dim Wk1 As Workbook, Wk2 As Workbook
'Attribution des variables ==============================
Fi1 = InputBox("Nom du fichier 1" & ".xls", "Nom1") 'Semble fonctionner
Fi2 = InputBox("Nom du fichier 2" & ".xls", "Nom2") 'Semble fonctionner
F1 = InputBox("Nom de la feuille 1", "Feuil1") 'Semble fonctionner
F2 = InputBox("Nom de la feuille 2", "Feuil2") 'Semble fonctionner
C1 = InputBox("Colonne de référence 1", "Colonne1") 'A tester
C2 = InputBox("Colonne de référence 2", "Colonne2") 'A tester
D = InputBox("Colonne de Départ de copie", "Depart") 'A tester
A = InputBox("Colonne d' arrivée (collage)", "Arrivee") 'A tester
'Vérification d'ouverture des classeurs ==============================
On Error Resume Next
Set Wk1 = Workbooks(Fi1 & ".xls")
If Err <> 1 Then
Call Ouverture_Fichier
Else
MsgBox "Le fichier " & Fi1 & " est déja ouvert"
End If
On Error Resume Next
Set Wk2 = Workbooks(Fi2 & ".xls")
If Err <> 1 Then
Call Ouverture_Fichier
Else
MsgBox "Le fichier " & Fi2 & " est déja ouvert"
End If
'Pour mémoire : (Macro d'ouverture de classeur - située plus haut)
'Sub Ouverture_Fichier()
'Dim Chemin_et_Fichier As String, Fichier As String, Rep_Fichier As String
'recuperation du chemin et nom de fichier
'Chemin_et_Fichier = RechercheFichier(Rep_Fichier)
'If Chemin_et_Fichier = "" Then
'MsgBox "Vous n'avez sélectionné aucun fichier"
'Else
'ouverture ficher selectionne
'Workbooks.Open (Chemin_et_Fichier)
'End If
'End Sub
'Vérification du nom des feuilles ==============================
'Vérifie que les feuilles demandées existent
Dim myArray As Variant, Nom As Variant 'déclaration des variables
myArray = Array(F1, "F2") 'création d'une variable dite Array avec 2 valeurs
For Each Nom In myArray 'boucle dans la variable Array
If TestOnglet(Nom) = False Then 'Test appelant la fonction
MsgBox "La feuille " & Nom & " n'existe pas."
End If 'fin de la condition
Next Nom 'appel de l'élément suivant de l'Array
'Attribution des chemins ==============================
Set F_A = Workbooks(Fi1).Sheets(F1) 'Ne fonctionne pas : l'indice n'appartient pas à la sélection.
Set F_B = Workbooks(Fi2).Sheets(F2) 'Ne fonctionne pas : l'indice n'appartient pas à la sélection.
'Traitement =======================
For Each Cel In F_A.Range(F_A.C1, F_A.Range(C1 & Rows.Count).End(xlUp)) 'Erreur compilation
'Pour chaque cellule de A 'Cel = cellules de références de feuille 3
If Not (IsEmpty(Cel)) Then
'si Cel n'est pas vide
Set Cel_A = F_B.C2.Find(Cel) 'Erreur compilation
'fixer Cel_a en tant cellule trouvée identique à Cel
'CelA = cellules de références de feuille 4
If Not (Cel_A Is Nothing) Then
'si Cel_A existe
'F_B.Range(Cel_A.Offset(0, 4), Cel_A.Offset(0, 4)).Copy F_A.Cells(Cel.Row, "C")
'Copie les cellules F de la feuille 4 en C de la feuille 3
'(J=9 : Colonne de référence + différence pour colonne à copier)
F_B.Range(C2.D, C2.D).Copy F_A.Cells(Cel.Row, A) 'A tester
'Copie les cellules F de la feuille 4 en C de la feuille 3
End If
End If
Next Cel 'Cel suivante
End Sub |
Partager