Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Importation avec condition

  • Initiateur de la discussion Initiateur de la discussion KM29
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

K

KM29

Guest
Bonjour,

J'ai ici deux fichier joints
Un fichier source et le fichier final, lorsque que je lance le classeurFinal , j'active les macro et il m'importe directement les donnée du ClasseurSource, si je modifie des valeurs dans le classeurSource alors quand je relancerai le ClasseurFinal, les données sont bien mise a jour
Maintenant moi je veux exactement la meme chose sauf que l'importation vers le ClasseurFinal se fasse avec les données du ClasseurSource mais seulement pour les ligne donc la colonne C est egal a 1,
Donc exactement la meme chose avec juste une condition en plus que C=1

Cordialement
 

Pièces jointes

Re : Importation avec condition

Bonjour KM29,

Tu peux essayer comme ceci :

Code:
Private Sub Workbook_Open()

Application.ScreenUpdating = False
Application.EnableEvents = False


Dim wb As Workbook
Dim ws As Worksheet
Dim Cel As Range, Lg As Long


Set wb = Workbooks.Open("\\ur850buro01\vol_buro\users\Ur52799102\Travaux Kevin\TEST\ClasseurSource.xls")
Set ws = wb.Worksheets("Feuil1")
Lg = 1
For Each Cel In ws.Range("C:C").SpecialCells(xlCellTypeConstants)
  If Cel.Value = 1 Then
    Workbooks("ClasseurFinal.xls").Sheets("Feuil1").Range("A" & Lg & ":C" & Lg).Value = ws.Range("A" & Cel.Row & ":C" & Cel.Row).Value
  End If
wb.Close dontsave = True
End Sub
Je n'ai pas pu tester suite à l'absence du répertoire mentionné pour le fichier source, mais ça devrait fonctionner.

Cordialement.
 
Re : Importation avec condition

Bonjour KM29 et bienvenue sur le forum 😱

Rien de plus simple! Simplement ouvrir l'éditeur VBE et modifier les cellules visées.

J'ai écrit un petit commentaire dans le code tu verras.

Pour le moment, J'ai modifié l'importation mais pas les cellules de destination, ne sachant pas où tu voulais les résultats dans ton fichier final.

Bonne journée,

Allo Papou 🙂 Évidement, moi j'ai pris la voie obscure et facile mais papou a une solution plus adaptée car lui, il déclare ses variables!

EDIT:J'ai parlé trop vite! Après test Papou, (d'ailleurs, il manque le Next) ça n'importe que la première ligne plutôt que la colonne C

Salut Matichoux 🙂
 

Pièces jointes

Dernière modification par un modérateur:
Re : Importation avec condition

Hello KM29,

Il suffit que tu ailles dans l'éditeur de macros au niveau de ton classeur final (celui chargé d'effectuer l'import des données provenant du classeur source). Il faut ensuite que tu places le code suivant pour réaliser la vérification que tu demandes :

Code:
' [...]
' code à placer après la ligne : Set ws = wb.Worksheets("Feuil1")

For Each cel In xs.Range("C1:C10")
    If cel.Value <> 1 Then _
        Workbooks("ClasseurFinal.xls").Sheets("Feuil1").Range("A1:C10").Value = ws.Range("A1:C10").Value
Next cel
' [...]
Pour chaque cellule contenue dans la plage allant de C1 à C10 si le contenu de la cellule est différent de 1 alors on procède à la copie sinon on ne fait rien.


EDIT : grilled ; hello Papou-net, Genevieve78
 
Re : Importation avec condition

RE : bonjour à tous, bonjour Geneviève,

Et oui, tu as raison Geneviève : j'ai cliqué sur Envoyer trop tôt.

Voici donc la correction :

Code:
Private Sub Workbook_Open()

Application.ScreenUpdating = False
Application.EnableEvents = False


Dim wb As Workbook
Dim ws As Worksheet
Dim Cel As Range, Lg As Long


Set wb = Workbooks.Open("\\ur850buro01\vol_buro\users\Ur52799102\Travaux Kevin\TEST\ClasseurSource.xls")
Set ws = wb.Worksheets("Feuil1")
Lg = 1
For Each Cel In ws.Range("C:C").SpecialCells(xlCellTypeConstants)
  If Cel.Value = 1 Then
    Workbooks("ClasseurFinal.xls").Sheets("Feuil1").Range("A" & Lg  & ":C" & Lg).Value = ws.Range("A" & Cel.Row & ":C" &  Cel.Row).Value
  End If
Lg =Lg  + 1
Next
wb.Close dontsave = True
End Sub
Merci à toi, Geneviève.

Cordialement.
 
Re : Importation avec condition

Re Papou; je n'ai pas de mérite autre que d'avoir testé 😉 mais avec plaisir!

Je me rends compte que je n'avais pas remarqué que KM voulait les résultats égaux à 1 donc je suis gênée... 🙄

Matichoux, petite erreur d'excécution 424 que je n'arrive pas à corriger 🙁
 
Re : Importation avec condition

Merci beaucoup !! j'ai cependant un petit probleme il me l'affiche sous cette forme ( piece jointe) alors que j'aimerai beaucoup si c'est possible avec un espace de 2 ligne entre chaque ligne , en gros pour mettre un commentaire ou une valeur juste en dessous !

Et je n'ai pas pu vous envoyer le vrai fichier (données confidentielle) , en realité mon fichier de source s'apel "suiviCPG" et la feuille s'appelle "TdB" et colonne n'est plus C mais bien BL et la valeur rechercher est toujours 1 j'ai modifier le code en fonction de mes modification mais ça ne fonctionne plus :/

Merci beaucoup
Cordialement
 

Pièces jointes

Re : Importation avec condition

Voici le code de Papou et en rouge les endroits à modifier:

Set wb = Workbooks.Open("\\ur850buro01\vol_buro\users\Ur52799102\Travaux Kevin\TEST\ClasseurSource.xls")
Ici, il faut mettre le chemin de ton fichier et son nom ou encore, juste ("suiviCPG.xls") s'il est ouvert pendant l'excécution de la macro


Set ws = wb.Worksheets("TdB")
Lg = 1
For Each Cel In ws.Range("BL:BL").SpecialCells(xlCellTypeConstants)
If Cel.Value = 1 Then
Workbooks("suiviCPG.xls").Sheets("Tdb").Range("A" & Lg & ":BL" & Lg).Value = ws.Range("A" & Cel.Row & ":BL" & Cel.Row).Value​

Je te suggère de modifier à la main et pas copier coller ce que je viens d'envoyer 😉
 
Re : Importation avec condition

@Genevieve78 : étonnant le code fonctionne correctement sur mon fichier de test (en complétant le code initial de KM29 par ce que j'ai indiqué). Peut être en ajoutant .Cells derrière ws.Range("C1:C10") et encore... L'erreur 424 vient du fait qu'un élément n'est pas déclaré ou correctement interprété, la procédure fait appel à une méthode d'un objet non reconnu. J'ai - de mon côté - bien déclaré tous les objets 'wb', 'ws', etc. et cela fonctionne.. donc bizarre..

Moi aussi j'ai visiblement mal compris la demande initiale ; je pensais qu'il fallait copier les cellules où la valeur en colonne C est différente de 1 alors qu'il semblerait que ce soit l'inverse qui soit souhaité.
 
Re : Importation avec condition

c'est pas plutot ceci ????


Set wb = Workbooks.Open("\\ur850buro01\vol_buro\users\Ur52799102\Travaux Kevin\TEST\ClasseurSource.xls")
Ici, il faut mettre le chemin de ton fichier et son nom ou encore, juste ("suiviCPG.xls") s'il est ouvert pendant l'excécution de la macro

Set ws = wb.Worksheets("TdB")
Lg = 1
For Each Cel In ws.Range("BL:BL").SpecialCells(xlCellTypeConstants)
If Cel.Value = 1 Then
Workbooks("ClasseurFinal.xls").Sheets("Feuil1").Range("A" & Lg & ":BL" & Lg).Value = ws.Range("A" & Cel.Row & ":BL" & Cel.Row).Value


Je me trompe peut etre
 
Re : Importation avec condition

Oui excusez moi je me suis peut etre mal exprimé, je m'en excuse
Chez moi sa marche mais lorsque j'adapte l'importation par rapport a un autre fichier rien ne se passe, je dois surement mal faire quelque chose mais je ne comprend pas ou est mon erreur, ( le code est dans le message précédent ) J'ai juste modifier le chemin, remplacer la colonne C par BL donc il devrait m importer les ligne dont la valeur dans la colonne BL est égal a 1 exactement comme précédement pour la colonne C mais la rien ne se passe :/

Mais je vous rassure cela marche quand j'utilise mes fichiers ClasseurSource et ClasseurFinal , je veux juste pas puiser dans ClasseurSource mais bien un autre et par consequent la colonne est plus C=1 mais bien BL=1 mais la rien ne se passe
 
Re : Importation avec condition

Re KM
Papou, MatiChoux 😱
Le Forum 😀

C'est très très très difficile sans les originaux alors ma suggestion, prends tes 2 originaux, réenregistres-les avec test ajouté au titre (ex.:suiviCPG_test), remplace les données par patate poil si tu veux et envoie-nous ces fichiers.

Crois-moi, tu sauveras un temps inimaginable et je parle d'expérience! Maintenant, je prends toujours mes orginaux et les modifies un peu car j'ai eu par le passé bien des problèmes d'adaptation, tout comme toi. 😱
 
Re : Importation avec condition

@ MatiChoux; Oui, J'ai bien remarqué que tes variables étaient bien déclarées! C'est ce que je trouvais bizarre et nous sommes tous deux sur 2003... Je viens d'importer à nouveau ton bout de code et je n'arrive pas encore à dénicher le problème, ça me taquine. Pour ma culture perso, me ferais-tu un copier-collé du code au complet de ton éditeur VBE(en message perso pour ne pas surcharger ce fil, qu'en dis-tu?) 😱
 
Re : Importation avec condition

Très bien

Voici mon fichier qui est utilisé en tant que Source (piece jointe)
Il doit alimenter mon fichier excel qui est vierge, qu on peut donc nommer par n'importe quel nom ( fichierFinal par exemple) et on peut definir la feuille 1 en "Feuil1"

Ce que je voudrais c'est donc que l'integralité des lignes où la case BL =1 soit importé dans mon fichierFinal excel
Exactement comme taleur sauf ici la colonne n'est plus C mais bien BL

J'aimerais un espace de 2 lignes entre chaque indicateur qui arrive sur FichierFinal et si mon fichier Source(en piece jointe) est modifié, alors quand je relancerais mon fichierFinal que cela soit remis à jour ( si on enleve le 1 de BL ou si on rajoute un 1 dans BL alors l'indicateur soit sera retirer soit rajouter )

J'espere etre clair ! merci beaucoup du temps que vous m'accordé en tous cas
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
7
Affichages
394
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…