Faire un copier coller avec 1 condition

Bonjour a tous

mon projet et dossier se décomposent de la façon suivante

j ai un dossier avec 3 fichiers :

1 classeur avec une feuille panneau de contrôle avec une feuille ou sont mes variantes (pour la duplication)

1 classeur modèle nommée ddpp71 qui doit se dupliquer

1 classeur nomme ddi qui possède 1 feuille nommé v2 qui me serre de "base de donnée"

mon projet

à partir d un bouton de contrôle dupliquer le classeur modelé ( partie réussi)

puis que le fichier DDI s ouvre ( ligne de code ok)

dans le fichier DDI feuille V2 je souhaite copier les élément relatif Range("K3:AK??").copy mais avec une condition le nom du dossier créer ( la sa bloque )

et qui me recopie cette partie dans le classeur nouvellement créer dans la feuille collaborateurs range ( b3:ab??)

la premier partie de mon code la voici pour dupliquer les dossiers

  Private Sub CommandButton2_Click()
Dim C As Variant
Dim dossierEnCours As String
dossierEnCours = ThisWorkbook.Path
Workbooks.Open Filename:=dossierEnCours & "\ddpp71.xlsx"

Application.ScreenUpdating = False

For Each C In ThisWorkbook.Sheets("liste").Range("A1:A22")
ActiveWorkbook.SaveAs Filename:=dossierEnCours & "\" & C & ".xlsx"

Next

ThisWorkbook.Sheets("liste").Activate
Application.ScreenUpdating = True
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub 

la copie simple

la voici

Dim dossierEnCours As String
dossierEnCours = ThisWorkbook.Path
Workbooks.Open Filename:=dossierEnCours & "\ddpp72.xlsx"
Workbooks.Open Filename:=dossierEnCours & "\ddi.xlsx"
Workbooks("ddi.xlsx").Sheets("v2").Range("K3:AK33").Copy
Workbooks("DDPP72.xlsx").Sheets("collaborateurs").Range("b5:ab33").PasteSpecial Paste:=xlPasteValues

le renvoie dans le fichier nouvellement créé, je n ai pas trouvé le code pour la mise en place d une condition avec IF then afin de copier coller l ensemble des élément de la base suivant le nom du nouveau dossier créé

merci pour votre aide

Bonjour

Sans tes fichiers pas facile à comprendre

A essayer

Private Sub CommandButton2_Click()
Dim WbModel As Workbook, WbDdi As Workbook
Dim C As Variant
Dim DossierEnCours As String

  Application.ScreenUpdating = False

  DossierEnCours = ThisWorkbook.Path
  Set WbModel = Workbooks.Open(Filename:=DossierEnCours & "\ddpp71.xlsx")
  Set WbDdi = Workbooks.Open(Filename:=DossierEnCours & "\ddi.xlsx")

  WbDdi.Sheets("v2").Range("K3:AK33").Copy
  WbModel.Sheets("collaborateurs").Range("B3").PasteSpecial Paste:=xlPasteValues

  For Each C In ThisWorkbook.Sheets("liste").Range("A1:A22")
    WbModel.SaveAs Filename:=DossierEnCours & "\" & C & ".xlsx"
  Next C

  WbModel.Close savechanges:=False
  WbDdi.Close savechanges:=False
End Sub

merci pour ce coup de pousse j ai fait évoluer ma macro mais ce n est pas encore cela

Private Sub CommandButton2_Click()
Dim C As Variant
Dim DossierEnCours As String
DossierEnCours = ThisWorkbook.Path
Workbooks.Open Filename:=DossierEnCours & "\ddpp71.xlsx"

Application.ScreenUpdating = False

For Each C In ThisWorkbook.Sheets("liste").Range("A1:A22")
ActiveWorkbook.SaveAs Filename:=DossierEnCours & "\" & C & ".xlsx"

Next

ThisWorkbook.Sheets("liste").Activate
Application.ScreenUpdating = True
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub

voici la deuxieme mais je n e sais faire la boucle de la condition

[codeDim dossierEnCours As String

dossierEnCours = ThisWorkbook.Path

Workbooks.Open Filename:=dossierEnCours & "\ddpp72.xlsx"

Workbooks.Open Filename:=dossierEnCours & "\ddi.xlsx"

Workbooks("ddi.xlsx").Sheets("v2").Range("K3:AK33").Copy

Workbooks("DDPP72.xlsx").Sheets("collaborateurs").Range("b5:ab33").PasteSpecial Paste:=xlPasteValues][/code]

le but s est d imbriquer les 2 macros ensembles

la valeur chercher et le nom du dossier créer et cette valeur ( la condition )

cette condition se trouve se trouve dans le classeur ddi feuille v2 colonne : R

merci pour votre aide

Bonjour

Je t'ai fait une macro qui correspond à ce que tu demandais

will83177 a écrit :

dans le fichier DDI feuille V2 je souhaite copier les élément relatif Range("K3:AK??").copy mais avec une condition le nom du dossier créer ( la sa bloque )

et qui me recopie cette partie dans le classeur nouvellement créer dans la feuille collaborateurs range ( b3:ab??)

Cette plage est copiée dans chaque classeur

Maintenant tu sors une autre condition en plus du nom

will83177 a écrit :

cette condition se trouve se trouve dans le classeur ddi feuille v2 colonne : R

Je ne vais pas jouer au devinettes longtemps

Sans tes fichiers et une explication claire je passe la main

Amicalement

je ne cherche pas à faire des devinette s

je n arrive pas a mettre mon fichier en ligne


je tai envoyer un mp

merci a toi

voila le part feu de la boite me bloquait l envoie de fichier

le voici

merci pour ta patience

26commande.zip (13.35 Ko)
25ddpp71.xlsx (232.62 Ko)
26ddi.xlsx (48.60 Ko)

Bonjour

Bon j'ai les fichiers, manque plus que l'explication claire

Ce que j'ai compris

La 1ère macro crée des fichiers suivant un modèle ( DDPP71) et ces fichiers se nomment DDPP72, DDPP73, DDPP74 etc ....

Ce que je ne comprends pas c'est la 2ème macro

Tu ouvres le fichier DDPP72 (nouvellement créé) et depuis le fichier DDI tu y copies 30 lignes ( de la ligne 3 à la ligne 33 )

Pourquoi le fichier DDPP72 ?

Pourquoi 30 lignes ?

Il faut faire pareil avec les autres fichiers DDPP73, DDPP74 etc... ?

Il faut y copier toujours ces mêmes lignes ?

Réponds à ces questions

merci pour t on aide

j ai travaillé toute l après midi dessus pour fusionner les 2 macro

peut etre que mon code est pas jolie mais cela marche en partie

le voici

Private Sub CommandButton2_Click()
Dim C As Variant
Dim dossierEnCours As String
dossierEnCours = ThisWorkbook.Path
Workbooks.Open Filename:=dossierEnCours & "\ddpp71.xlsx", UpdateLinks:=False

Application.ScreenUpdating = False

For Each C In ThisWorkbook.Sheets("liste").Range("A1:A3")
ActiveWorkbook.SaveAs Filename:=dossierEnCours & "\" & C & ".xlsx"

Next

For Each C In ThisWorkbook.Sheets("liste").Range("A1:A3")

Workbooks.Open Filename:=dossierEnCours & "\" & C & ".xlsx", UpdateLinks:=False
Workbooks.Open Filename:=dossierEnCours & "\ddi.xlsx", UpdateLinks:=False

Workbooks("ddi.xlsx").Sheets("v2").Range("K3:AK33").Copy
Workbooks(C & ".xlsx").Sheets("collaborateurs").Range("b5:ab33").PasteSpecial Paste:=xlPasteValues

Next

For Each C In ThisWorkbook.Sheets("liste").Range("A1:A3")
Workbooks(C & ".xlsx").Save
Workbooks(C & ".xlsx").Close
Next

Workbooks("ddi.xlsx").Close

ThisWorkbook.Sheets("liste").Activate
Application.ScreenUpdating = True
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.CutCopyMode = False
Application.DisplayAlerts = True
End Sub

pour le moment j arrive a créer des classeur à partir du modele DDPP71 une fois crée

le fichier DDI s ouvre

il est copier dans chaque classeur nouvellement créer

mon problème

( espérant être clair )

la copie doit etre conditionner par le nom du fichier ( c a dire je souhaite que le fichier ddpp72 récupère les données (DDPP72) du fichier DDI feuille V2 et pour chaque dossier crée

la valeur DDPP72 se trouve dans la colonne R du fichier DDI feuille V2

je souhaite que la macro parcoure l'intégralité du fichier V2

et copie chaque ligne de K3 au ak dernière ligne correspondant au fichier en question

la collage en valeur sur de B5 AB dernier ligne fichier DDPP72 feuille collaborateur

comme tu peux le voir ma macro est capable d ouvrir créer un dossier avec un nom lui coller une partie de dossier

mais je n ai pas encore trouver

la condition

parcourir un fichier de la dernière ligne à la premier

et je pense que mon code est un peu moyen

car par exemple pour la liste je suis obligé de lui donner un range (A1 : A3 ) je préférai qu'il parcoure de lui même la colonne A et dés que s'est vide il s arrête de lui même

merci a toi

Bonsoir

A tester

merci a toi

peux tu me conseiller un livre pour progresser

Bonsoir

Je ne te connais pas et je ne suis pas apte à juger ton niveau

Tout ce que je peux c'est de pratiquer,pratiquer, pratiquer

Les cours sur ce site sont excellents pour commencer ou pour s'améliorer

A toi de voir

merci je vais pratiquer

dessiner mes plans

un grand merci

petite question supplémentaire

If Application.Subtotal(103, WbDdi.Sheets("v2").Range("R3:R" & NbLg)) > 0 Then

pourquoi la valeur 103 car quand je la change il bug

merci pour ton aide

Bonjour

will83177 a écrit :

pourquoi la valeur 103 car quand je la change il bug

Et c'est déjà une réponse

Regardes l'aide de la fonction SOUS.TOTAL()

103 : Correspond à la fonction NBVAL() (que j'utilise si des lignes filtrées)

Rechercher des sujets similaires à "copier coller condition"