Rapatrier des données sous conditions vers un autre classeur
Résolu/Fermé
gu95
-
24 nov. 2015 à 14:11
gu95 Messages postés 3 Date d'inscription mardi 12 janvier 2016 Statut Membre Dernière intervention 25 janvier 2016 - 25 janv. 2016 à 17:24
gu95 Messages postés 3 Date d'inscription mardi 12 janvier 2016 Statut Membre Dernière intervention 25 janvier 2016 - 25 janv. 2016 à 17:24
A voir également:
- Rapatrier des données sous conditions vers un autre classeur
- Windows 7 vers windows 10 - Guide
- Validation des données excel - Guide
- Transferer photo android vers pc - Guide
- Effacer les données de navigation - Guide
- Qwerty vers azerty - Guide
2 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
25 nov. 2015 à 08:18
25 nov. 2015 à 08:18
Bonjour,
il manque beaucoup de renseignements nécessaires à la construction d'une macro comme
nombre de lignes concernées et à partir de quelles lignes? quelles colonnes ? localisation et nomdes 2 classeurs ? où installe t'on le résultat dans le classeur cible ? etc.
au besoin
Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci proposé (clic droit) dans le message de réponse
Dans l'attente
il manque beaucoup de renseignements nécessaires à la construction d'une macro comme
nombre de lignes concernées et à partir de quelles lignes? quelles colonnes ? localisation et nomdes 2 classeurs ? où installe t'on le résultat dans le classeur cible ? etc.
au besoin
Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
et coller le raccourci proposé (clic droit) dans le message de réponse
Dans l'attente
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
4 déc. 2015 à 12:05
4 déc. 2015 à 12:05
Bonjour
proposition
proposition
Option Explicit
Option Base 1
'------------------------------------------------------------------
Sub rapatrier()
Dim Derlig As Integer, Nbre As Integer, T_bdd, T_oui
Dim Lig As Integer, Cptr As Integer, Index As Integer
Dim Ligvid As Integer
'------------initialisations
Application.ScreenUpdating = False
With ThisWorkbook.Sheets("BDD")
Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
Nbre = Application.CountIf(.Columns("A"), "oui")
'mémorisation en RAm des données et _
préparation de variable-tableau des lignes "oui"
T_bdd = .Range("B2:E" & Derlig)
ReDim T_oui(Nbre, 3)
'----------------selection des lignes "oui"
Lig = 1
For Cptr = 1 To Nbre
Lig = .Columns("A").Find("oui", Cells(Lig, "A")).Row
Index = Index + 1
'copie des données "oui"
T_oui(Index, 1) = T_bdd(Lig - 1, 1)
T_oui(Index, 2) = T_bdd(Lig - 1, 2)
T_oui(Index, 3) = T_bdd(Lig - 1, 4)
Next
End With
'---------------------rapatriement
Workbooks.Open Filename:="exemple.xlsx" ' A ADAPTER
With Sheets("BpU")
Ligvid = .Columns("A").Find(what:="", after:=.Range("A1")).Row
.Cells(Ligvid, "A").Resize(Nbre, 3) = T_oui
.Activate
End With
End Sub
Re-bonjour Michel,
tout d'abord un grand merci pour votre réponse extrêmement rapide. j'ai essayé de faire tourner le programme mais j'ai un message d'erreur qui je pense doit venir de l'emplacement du deuxième fichier "exemple".
Le message erreur d'exécution 1004 contient 'exemple.xlsx est introuvable. vérifier le nom du classeur et la validité de l'emplacement.
Mes deux fichiers sont pourtant enregistrés dans un seul et même dossier.
tout d'abord un grand merci pour votre réponse extrêmement rapide. j'ai essayé de faire tourner le programme mais j'ai un message d'erreur qui je pense doit venir de l'emplacement du deuxième fichier "exemple".
Le message erreur d'exécution 1004 contient 'exemple.xlsx est introuvable. vérifier le nom du classeur et la validité de l'emplacement.
Mes deux fichiers sont pourtant enregistrés dans un seul et même dossier.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
>
gu95
4 déc. 2015 à 15:52
4 déc. 2015 à 15:52
curieux!..... j'avais essayé chez moi et c'était OK "exemple" s'était ouvert....
Je viens de réessayer et c'est OK
pistes:
1/Si tu as mis le nom réel de ton classeur cible, vérifie l'orthographe (attention aux espaces...;)
2/ essaie en mettant le chemin avant d'ouvrir "exemple"
mais je t'avoue que je suis perplexe !
tu dis le résultat des courses
Je viens de réessayer et c'est OK
pistes:
1/Si tu as mis le nom réel de ton classeur cible, vérifie l'orthographe (attention aux espaces...;)
2/ essaie en mettant le chemin avant d'ouvrir "exemple"
dim chemin as string"
chemin=thisworbook.path &"\"
Workbooks.Open Filename:=chemin & "exemple.xlsx
mais je t'avoue que je suis perplexe !
tu dis le résultat des courses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
>
gu95
4 déc. 2015 à 16:05
4 déc. 2015 à 16:05
Bon WE :o)
gu95
Messages postés
3
Date d'inscription
mardi 12 janvier 2016
Statut
Membre
Dernière intervention
25 janvier 2016
25 janv. 2016 à 17:24
25 janv. 2016 à 17:24
Bonjour,
J'avais encore une question, est-il possible de conserver la mise en forme des cellules du premier fichier BDD lorsque les données sont rapatriées dans le fichier "exemple"?
Merci encore par avance,
J'avais encore une question, est-il possible de conserver la mise en forme des cellules du premier fichier BDD lorsque les données sont rapatriées dans le fichier "exemple"?
Merci encore par avance,
4 déc. 2015 à 09:39
En effet je n'ai pas mis beaucoup de renseignements. J'ai un fichier "BDD" (ci-joint : http://www.cjoint.com/c/ELeiE6EKe8C) qui va être une base de données vivante, c'est à dire que de nouvelles lignes pourront y être créées. De ce fait toutes les lignes du classeur peuvent potentiellement être concernées.
Dans ce fichier BDD, la colonne A sert à sélectionner les lignes que l'on souhaite reporter dans le deuxième fichier: "Exemple". La sélection de ces lignes se fait via une liste déroulante "Oui" pour que la ligne soit reportée dans le fichier exemple, "Non" poiur qu'elle ne le soit pas.
Dans le fichier "Exemple" j'aimerais reporter dans la première feuille "BPU" les colonnes suivantes: (cf fichier joint: http://www.cjoint.com/c/ELeiFM5VkoC )
- colonne B : Code
- Colonne C : Désignation des prestations
- Colonne E: unité
Ce qui serait top serait également de copier les en-tête des colonnes où bien de les conserver comme telles dans le fichier "exemple".
Ces deux fichiers seront rangés dans le même répertoire.
J'ai déjà un début de piste avec le code suivant, cependant les données sont reportées dans le même classeur, je n'arrive pas à sélectionner les colonnes qui m'intéresse et j'ai le problème des en-tête.
Sub Copier()
Dim Lig As Long
Dim Col As String
Dim NbrLig As Long
Dim NumLig As Long
Sheets("Feuil2").Activate ' feuille de destination
Col = "A" ' colonne de la donnée non vide à tester
NumLig = 0
With Workbooks("BDD_travail.xls").Worksheets("BDD") ' feuille source
NbrLig = .Cells(65536, Col).End(xlUp).Row
For Lig = 1 To NbrLig
If .Cells(Lig, Col).Value = "Oui" Then
.Cells(Lig, Col).EntireRow.Copy
NumLig = NumLig + 1
Cells(NumLig, 1).Select
ActiveSheet.Paste
End If
Next
End With
End Sub
Merci par avance,