VBA copier cellule X vers cellules Y avec condition

Bonjour à tous et à toutes,

Nouveau sur VBA, j'ai besoin de votre support , j'ai essayé plein d'hypothèses mais du coup je tourne en rond et je suis perdu

J'essaye d'adapter une de mes macro, pour le besoin ci-dessous :

Je souhaite :

Copier la cellule A6 de ma feuille OIL MLE

puis, la coller dans la colonne Z de cette même feuille, et ceci, en partant de la ligne 11 (si cette ligne est non vide)

La macro actuelle :

Sub CopierOIL()

Range("A11:AA64000").Select 'selection du tableau "zone de données"

Selection.ClearContents 'effacement des données initiales

ligne = 11

Set ws = ThisWorkbook.ActiveSheet

Chemin = "C:\Users\brenaud\Desktop\EDU CAB TEST\DR EDU MLE\" 'Indiquer ici le chemin complet du dossier où se trouvent les fichiers sources

Fichier = Dir(Chemin & "*.xlsm") ' Premier fichier

Do While Fichier <> ""

Set wb = Workbooks.Open(Filename:=Chemin & Fichier)

Set wss = wb.Sheets("OIL")

dl = wss.Cells(Rows.Count, 1).End(xlUp).Row

wss.Range("$A$8:$Z$" & dl).Copy ws.Cells(ligne, 1)

ws.Cells(ligne, "AA").Resize(dl - 7, 1) = Fichier

wb.Close False

Application.CutCopyMode = False

ligne = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1

Fichier = Dir ' Fichier suivant

Loop

Range("AA11:AA64000").Select

With Selection.Font

.ColorIndex = xlAutomatic

.TintAndShade = 0 'colonne Y en couleur noire

End With

End Sub

Merci à vous pour votre aide

Bonjour Bernard, bonjour le forum,

C'est très flou !... Le code que tu nous montres ouvre chaque fichier Excel du dossier "C:\Users\brenaud\Desktop\EDU CAB TEST\DR EDU MLE\" pour en récupérer des données et les coller dans le classeur destination.

Toi tu pales juste de Copier la cellule A6 de ma feuille OIL MLE puis, la coller dans la colonne Z de cette même feuille, et ceci, en partant de la ligne 11 (si cette ligne est non vide)

Ça n'a absolument rien à voir !... Tu veux quoi exactement ?...

Bonjour ThauThème,

Je cherche a adapter cette macro qui marche très bien , mais en y ajoutant un copier coller dans une colonne supplémentaire Z

Petite Précision,

Le fichier OIL MLE , comporte dans ces 10 premières lignes des informations, graphiques , etc,

et il m'est important de pouvoir copier une nouvelle valeur la cellule A6

Ensuite, j'ai d'autres fichiers qui vont reprendre cet OIL et d'autres encore pour les compiler en un OIL général

J'ai "vidé" la colonne Z pour la laisser libre et recevoir les données de la cellule en A6

wss.Range("$A$8:$Y$" & dl).Copy ws.Cells(ligne, 1)

J'avais essayé , sans macro , avec une fonction SI. : ca marchait sur cet OIL "fils"

Mais lorsque je veux utiliser les informations issues de ces lignes de cet OIL "fils", pour les importer dans un autre OIL dit "père" : il me copie la formule SI et du coup il intègre la cellule A6 de l'OIL "père" : ce qui ne marche plus

Bonjour,

J'ai essayé à nouveau avec une autre approche :

avec la fonction : =SI(Z11="OUI";$A$6;"")

J'ai donc créé mon besoin / ma cible en colonne AC

Je souhaite maintenant que les valeurs de cette colonne AC11:AC64000 soit reproduites en colonne AB11:AB64000 mais sans la formule SI

Auriez vous une piste pour intégrer cette phase dans la macro ci-dessous ?

Sub CopierOIL()

Range("A11:AB64000").Select 'selection du tableau "zone de données"

Selection.ClearContents 'effacement des données initiales

ligne = 11

Set ws = ThisWorkbook.ActiveSheet

Chemin = "C:\Users\brenaud\Desktop\EDU CAB TEST\DR EDU MLE\" 'Indiquer ici le chemin complet du dossier où se trouvent les fichiers sources

Fichier = Dir(Chemin & "*.xlsm") ' Premier fichier

Do While Fichier <> ""

Set wb = Workbooks.Open(Filename:=Chemin & Fichier)

Set wss = wb.Sheets("OIL")

dl = wss.Cells(Rows.Count, 1).End(xlUp).Row

wss.Range("$A$8:$Z$" & dl).Copy ws.Cells(ligne, 1)

ws.Cells(ligne, "AA").Resize(dl - 7, 1) = Fichier

wb.Close False

Application.CutCopyMode = False

ligne = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1

Fichier = Dir ' Fichier suivant

Loop

Range("AA11:AB64000").Select

With Selection.Font

.ColorIndex = xlAutomatic

.TintAndShade = 0 'colonne Y en couleur noire

End With

End Sub

Bonjour,

Et si, à la place de "Copier/Coller", tu mettais juste les valeurs?

Tu remplaces cette ligne :

wss.Range("$A$8:$Z$" & dl).Copy ws.Cells(ligne, 1)

par celle-ci :

ws.Cells(ligne, 1).Value = wss.Range("$A$8:$Z$" & dl).Value

Peut-être?

Edit, quoiqu'il faudra sans doute ajouter un Resize (nb lignes, nb colonnes) juste après (ligne, 1), je pense...

Style : (mais sans filet...)

ws.Cells(ligne, 1).Resize(dl, 26).Value = wss.Range("$A$8:$Z$" & dl).Value

Bonjour Cousinhub,

Merci à toi d'essayer de m'aider

Je viens d'essayer et à part les valeurs de la colonne A11:A64000, toutes les autres valeurs ont disparus

RE-,

Oui, j'ai rajouté un Edit, suite à ma réponse...

Désolé

Pas de souci

Je viens de prendre en compte ton Edit

il m'a insérer 10 lignes comprenant des : #N/A

Re-,

Comme précisé dans mon Edit également, "sans filet"....

Ne connaissant pas la structure de tes fichiers (source et destination), ni les valeurs et/ou formules du classeur source, ça ne va pas être simple...

Oui je m'en doute , pour toi ce n'est pas facile si tu n'as pas toutes mes données

Mon fichier est trop volumineux, je vais le simplifier

Re-,

Effectivement, le fichier "source", avec la macro + 1 fichier exemple (notamment reproduisant ce phénomène) serait un plus

Le fichier en question

Je vais te transmettre un fichier source en exemple

Donc , à défaut d'une autre solution, j'essayai de mettre les info de la colonne AC (ici RENAUD Bernard) en AB mais sans la valeur SI

Ceci fait, je pourrais avec un autre OIL destiné au N+1 de continuer à superviser l'ensemble des OIL de ces N-1

Re-,

Tu l'avais presque....

dl -7 dans le resize...

Peut-être?

Après la ligne ? :

ws.Cells(ligne, "AA").Resize(dl - 7, 1) = Fichier

J'en rigole mais je m'énerve là je suis une bille en VBA, faut du temps et de la pratique pour ce logiciel là

Ca progresse , j'ai tenté :

Nom = Range("AC11:AC64000").Select

ws.Cells(ligne, "AB").Resize(dl - 7, 1) = Nom

il m'indique "VRAI" en colonne AB11:AB64000 , mais pas encore "RENAUD Bernard"

Une piste ?

Re-,

Je ne suis pas sûr qu'on travaille sur le même problème...

Pour le dl - 7, c'était dans la ligne de code que j'avais mis en Edit :

ws.Cells(ligne, 1).Resize(dl - 7, 26).Value = wss.Range("$A$8:$Z$" & dl).Value

Et pour ton souci en colonne AC, je ne comprends pas ce que tu veux...

Rechercher des sujets similaires à "vba copier condition"