Import sous conditions

Fermé
Alexcz Messages postés 20 Date d'inscription mercredi 25 avril 2018 Statut Membre Dernière intervention 31 mai 2018 - 14 mai 2018 à 07:49
Alexcz Messages postés 20 Date d'inscription mercredi 25 avril 2018 Statut Membre Dernière intervention 31 mai 2018 - 15 mai 2018 à 14:23
Hello le fofo,

Je reviens ici avec un sujet car malgré mes recherches dans les discutions, je ne trouve pas mon bonheur ...
Je m'explique :

J'ai un fichier A avec un onglet 1 dans lequel je trouve les conditions suivantes :
- SAISON = cellule C5
- SEGMENT = cellule C6
- FAMILLE = cellule C8
- CONDITION X = cellule X (possibilité dans l'avenir d'ajouter une condition)
- un bouton "Importer"

J'ai un onglet 2 du fichier A qui lui est l'endroit dans lequel je vais importer les éléments. A terme il comporte des données, je veux les supprimer et les remplacer à chaque nouvel import.

J'ai un fichier B avec un onglet 1 qui lui comporte X colonnes avec une en-tête en ligne 2 et les valeurs les unes à la suite des autres en dessous.
Je retrouve notamment mes conditions :
- SAISON en colonne B
- SEGMENT en colonne E
- FAMILLE en colonne A
- CONDITION X en colonne X

L'exécution doit sélectionner toutes les lignes de l'onglet 1 du fichier B, les copier, puis les coller dans l'onglet 2 du fichier A.
J'aimerai de plus que, si une des conditions est "null" alors il ne la prend pas compte.

Si quelqu'un à la recette miracle .. je l'en remercie de tout coeur

A+

1 réponse

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
14 mai 2018 à 08:39
Bonjour,

Pour les miracles, tu n'es peut-être pas au bon endroit, mais je te propose d'utiliser cette macro pour réaliser ton projet :
Public Sub import()
Dim cel As Range, wi As Workbook, lig As Long
    Set wi = Workbooks("Classeur2") ' mettre le nom du classeur à copier ouvert
    Sheets(2).Cells.ClearContents
    wi.Sheets(1).Rows(2).Copy Destination:=Sheets(2).Rows(1)
    lig = 2
    For Each cel In wi.Sheets(1).UsedRange.Columns(1).Cells
        If cel.Value = [C8].Value _
            And cel.Offset(0, 1).Value = [C5].Value _
            And cel.Offset(0, 4).Value = [C6].Value Then
                wi.Sheets(1).Rows(cel.Row).Copy Destination:=Sheets(2).Rows(lig)
                lig = lig + 1
        End If
    Next cel
End Sub

Il faut bien sûr mettre le nom correct de ton classeur à copier.
0
Alexcz Messages postés 20 Date d'inscription mercredi 25 avril 2018 Statut Membre Dernière intervention 31 mai 2018
14 mai 2018 à 10:41
Hello !

Et merci pour ta réponse ..
Je viens de tester .. j'ai l'impression qu'il y a un souci, un mélange entre les 2 classeurs non ?

Je dois copier des lignes d'un classeur CHEMISIERS en fonction des conditions du classeur BUDGET CHEMISIERS onglet 1 et les coller dans BUDGET CHEMISIERS onglet 2 en ayant pris soin d'effacer les données de ce dernier onglet auparavant .

Est ce bien cela que tu as compris ?

Merci
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
Modifié le 14 mai 2018 à 10:49
re
Est ce bien cela que tu as compris ?
Absolument mais il faut changer
Workbooks("Classeur2") 
par
Workbooks("CHEMISIERS") 
;-)
et mettre la procédure dans un module du classeur BUDGET CHEMISIERS
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
15 mai 2018 à 08:30
Bonjour,

Tu en es où de ton mélange supposé ?
As-tu résolu ce souci ?
0
Alexcz Messages postés 20 Date d'inscription mercredi 25 avril 2018 Statut Membre Dernière intervention 31 mai 2018
15 mai 2018 à 14:23
Hello désolé j’enchaîne les soucis :S
J'en viens donc maintenant à pouvoir tester ta solution :) et je reviens vers toi sous peu
0