import données autre classeur, sous condition

Annie77

XLDnaute Nouveau
Bonjour à toutes et tous,


J'ai commencé par vouloir importer des données d'un classeur (source) "PourExtraction" vers un autre classeur (destination) "Extraction".

J'ai cherché sur le forum et vu pas mal de code. Quand j'essaye de l'appliquer à mon cas, cela ne fonctionne pas...(message d'erreur)

Je vous joint en zip les deux fichiers.

En fait, en fonction des infos se trouvant sur la page "données" du classeur destination, j'importe ou nom des infos de l'autre classeur.
Ex. si la case B18 = 0 => pas d'import des données de cette feuille
Si B19<>0 : j'importe les données de la feuille n° 105 du classeur source vers la feuille 105 de "destination". Puis, en face de toutes les données importées, je rajoute le n° interne (colonne B3 de la feuille données du classeur destination)


Aussi, j'ai de nombreuses feuilles à importer, je souhaiterai donc faire une boucle (feuille de calcul 100 à 110, par exemple)... et là... cela se complique ...


Par avance, merci bcp de votre aide !

J'espère que mon explication aura été claire...
 

Pièces jointes

  • extract.zip
    28.7 KB · Affichages: 43
  • extract.zip
    28.7 KB · Affichages: 42
  • extract.zip
    28.7 KB · Affichages: 45

kjin

XLDnaute Barbatruc
Re : import données autre classeur, sous condition

Bonjour,
Pas vraiment clair tout ça (enfin pour moi)

En fait, en fonction des infos se trouvant sur la page "données" du classeur destination, j'importe ou nom des infos de l'autre classeur.
Ex. si la case B18 = 0 => pas d'import des données de cette feuille

Quelle est l'info qui permet de dire quelle feuille doit être insérée ?

Si B19<>0 : j'importe les données de la feuille n° 105 du classeur source vers la feuille 105 de "destination". Puis, en face de toutes les données importées, je rajoute le n° interne (colonne B3 de la feuille données du classeur destination)
Aussi, j'ai de nombreuses feuilles à importer, je souhaiterai donc faire une boucle (feuille de calcul 100 à 110, par exemple)... et là... cela se complique

Idem première remarque, d'autant qu'ici on ne sait pas pourquoi la feuille 105, ni où la trouver ?!

En attendant plus de précisions
A+
kjin
 

Annie77

XLDnaute Nouveau
Re : import données autre classeur, sous condition

Merci bcp de ton retour... Il est vrai que la retranscription de ma pensée ne semble pas très claire.

En fait, quand je clique sur mon bouton "import" (dans le classeur destination = "extraction"), la macro doit regarder sur la page "données", en face de mes 2 items (public / privé) si un montant > 0 (en colonne B) est indiqué.

Si colonne B (public) > 0, la macro va chercher la feuille 104 du fichier "Pour Extraction", copie et colle le contenu dans la feuille 104 du fichier "Extraction". Sinon, il ne se passe rien,
Si colonne B (privé) > 0, la macro va chercher la feuille 105 du fichier "Pour Extraction", copie et colle le contenu dans la feuille 105 du fichier "Extraction". Sinon, il ne se passe rien,
et ainsi de suite pour mes autres feuilles non mises dans cet exemple.
Ensuite, on colle en colonne A de la feuille 104 et/ou 105, le n°interne (zone jaune de la page données du fichier extraction), en face des données nouvellement collées.

Mon soucis est que je travaille sur un nom de "feuilcalc" et je n'arrive à le faire "comprendre" à mon code...

Dans les deux fichiers, les n°feuille ont le même numéro.
Ensuite, je passe à un autre fichier.


Par avance, merci bcp de votre aide !
 

kjin

XLDnaute Barbatruc
Re : import données autre classeur, sous condition

Bonsoir,
D'abord, milles excuses, je n'avais pas vu le N° d'index des feuilles.
En résumé :
si B18 <>0 --> on copie Source/feuille 104 --> Classeur actif/feuille 104
si B19 <>0 --> on copie Source/feuille 105 --> Classeur actif/feuille 105
dans les 2 cas on colle aussi le code en colonne A

Jusque là, ça va, sauf que :
- les données doivent-elles être ajoutées à celles éventuellement existantes ou faut-il tout effacer avant ?
Tu dis vouloir faire une boucle avec toutes les feuilles :
- toujours depuis la même source ou faut-il en changer ?
- faut-il par exemple boucler sur toutes les feuilles 104 de différents fichiers, ou sur les feuilles du fichier source, avec un index pair ou impair par exemple, car tu précises feuilles 100 à 110, sauf qu'à priori dans l'exemple que tu donnes c'est soit 104 soit 105.
J'avoue avoir du mal à suivre et que des précisions sont bienvenues.
A+
kjin
 

Annie77

XLDnaute Nouveau
Re : import données autre classeur, sous condition

Bonjour Kjin,


En effet, tion résumé est exact.

Aussi, on colle en dessous des données déjà existantes.
La source va changer mais je vais renommer mon classeur pour qu'il s'appelle toujours "Pour Extraction" (maintenant, si je peux me passer de renommer, cela m'arrangerait aussi... :=) !)

En fait, dans mon fichier source, je vais avoir des index de 100 à 110. Mais, si cela fonctionne sur 2 feuilles, cela marchera pour pour (avec un for ... next).

Voici ce que j'ai essayé comme code : mais cela ne fonctionne pas... et je ne comprends pas pourquoi... :=( !

Sub import()
Dim Source As Workbook
Dim Destin As Workbook
Dim S_Range As Range
Dim D_range As Range
Dim D As Integer
Dim S As Integer
Set Destin = Workbooks("Extraction")
Set Source = Workbooks("PourExtraction")

For m = 104 To 105

Source.Activate

For Each Feuilcalc In ActiveWorkbook.Sheets
Select Case Mid(Feuilcalc.CodeName, 6)
Case m To m
Feuilcalc.Select
Set S_Range = Source.ActiveSheet.Range("A4:G" & [G65536].End(xlUp).Row)
End Select
Next


Destin.Activate
For Each Feuilcalc In ActiveWorkbook.Sheets
Select Case Mid(Feuilcalc.CodeName, 6)
Case m To m
Feuilcalc.Select
Set T_Range = Destin.ActiveSheet.Range("B" & [B65536].End(xlUp).Row + 1)
End Select
Next

S_Range.Copy D_range

m = m + 1

Next m

'Source.Close
End Sub



Par avance, merci bcp de ton aide.


Bon WE !
 

kjin

XLDnaute Barbatruc
Re : import données autre classeur, sous condition

Bonjour,
Je ne désespère pas, on va surement y arriver :rolleyes:

La source va changer mais je vais renommer mon classeur pour qu'il s'appelle toujours "Pour Extraction" (maintenant, si je peux me passer de renommer, cela m'arrangerait aussi... :=) !)

Il ne s'agissait pas de renommer le classeur, mais de savoir s'il y avait un classeur source unique

En fait, dans mon fichier source, je vais avoir des index de 100 à 110. Mais, si cela fonctionne sur 2 feuilles, cela marchera pour pour (avec un for ... next)

C'est là que je ne comprends toujours pas !
On recommence :
Tu copies la feuille 104 du classeur source si la cellule B18 <> 0
Tu copies la feuille 105 du classeur source si la cellule B19 <> 0
Mais comment sait-on que ça peut aussi être la 100, ou la 101, ou la 102, ou la 103, ou la 104 (non ça je sais), ou la 105(non je sais aussi), ou la 106, ou la 107, ou la 108, ou la 109, ou la 110 ???? Ouf :mad:
Est ce que c'est la référence à une autre cellule de la colonne B qui serait <> 0 ?
Et, dans ce cas, la feuille qui accueille les données, est-ce la feuille public ou privé ? (B18 je sais, B19 aussi, c'est pour ça que je parlais de pair et impair) ou dans ton classeur destination as tu aussi les feuilles 100 à 110 ?

Sinon, joindre le fichier
A+
kjin
 
Dernière édition:

Annie77

XLDnaute Nouveau
Re : import données autre classeur, sous condition

Bonjour Kjin et merci de ton retour,

En fait, j'ai de nombreux fichiers, avec des noms différents mais ayant tous la même structure (identique au fichier "PourExtraction" ) pour lesquels je souhaite importer les données et les condolider dans un fichier ""Extraction".

Comme je ne sais pas mettre en variable dans le code le nom du classeur, je contournais le pb en pensant les renommer, 1 à 1, avant de lancer la macro.

Pour répondre à ton interrogation suivante :
"Tu copies la feuille 104 du classeur source si la cellule B18 <> 0
Tu copies la feuille 105 du classeur source si la cellule B19 <> 0
Mais comment sait-on que ça peut aussi être la 100, ou la 101, ou la 102, ou la 103, ou la 104 (non ça je sais), ou la 105(non je sais aussi), ou la 106, ou la 107, ou la 108, ou la 109, ou la 110 ???? Ouf :mad:
Est ce que c'est la référence à une autre cellule de la colonne B qui serait <> 0 ?
Et, dans ce cas, la feuille qui accueille les données, est-ce la feuille public ou privé ? (B18 je sais, B19 aussi, c'est pour ça que je parlais de pair et impair) ou dans ton classeur destination as tu aussi les feuilles 100 à 110 ?
"

Mes classeurs sources ayant tous la même configuration, ma feuille "104" sera toujours celle que je devrais exporter dans ma feuille "104" du classeur destination (idem pour 105 ... et les autres...)


Je me dis que si je sais faire la boucle sur 2 feuilles, je saurais la faire sur les autres... :=) !


Par contre, je ne comprends pas pourquoi mon code du précédent message ne fonctionne pas....


Par avance, merci bcp de ton aide, bonne journée et bonne semaine !

A77
 

Discussions similaires

Statistiques des forums

Discussions
312 680
Messages
2 090 866
Membres
104 681
dernier inscrit
Gtcheumawe