Copier si condition 1remplie et coller sur un autre classeur si condition2 rempl
Dernière réponse : dans Programmation
Bonjour tout le monde, Voilà après des reherches et des recherches, je viens chercher une réponse à ma question. merci d'avance de l'attention que porterez à ce message. Voici mon problème : J'aimerai copier des lignes de mon classeurA qui se trouve dans mon C/temp si la colonne L de la feuille 1 n'est pas vide. Et puis coller ces données copiées dans un autre classeurB, dans la colonne L de la feuille 1 si la valeur de la colonne D du classeurA est la même que celle du classeurB.
voici mon code mais il ne génére aucun résultat :
Sub test3()
Dim ligne As Long
Dim a As Long Dim
FeuilleSource As Worksheet
Dim FeuilleCible As Worksheet
Dim Sh As Workbook
Dim Sh1 As Workbook
Set Sh = Worksbooks("classeurA.xlsm").Worksheets("Feuil1")
Set Sh1 = Worksbooks("classeurB.xlsm").Worksheets("Feuil1")
ligne = 2 ligne
For a = 2 To 65536
If Sh.Cells(a, 4).Text = Sh1.Cells(a, 4) Then
Sh.Cells(a, 12).Copy Sh1.Cells(ligne, 12)
ligne = ligne +1
End If
Next
End Sub
je vous remercie encore
voici mon code mais il ne génére aucun résultat :
Sub test3()
Dim ligne As Long
Dim a As Long Dim
FeuilleSource As Worksheet
Dim FeuilleCible As Worksheet
Dim Sh As Workbook
Dim Sh1 As Workbook
Set Sh = Worksbooks("classeurA.xlsm").Worksheets("Feuil1")
Set Sh1 = Worksbooks("classeurB.xlsm").Worksheets("Feuil1")
ligne = 2 ligne
For a = 2 To 65536
If Sh.Cells(a, 4).Text = Sh1.Cells(a, 4) Then
Sh.Cells(a, 12).Copy Sh1.Cells(ligne, 12)
ligne = ligne +1
End If
Next
End Sub
je vous remercie encore
Autres pages sur : copier condition 1remplie coller classeur condition2 rempl
Lassé par la pub ? Créez un compte
Meilleure solution
Mais bien sûr qu'il faut ajouter un For i !!!!
Il faut que tu boucles sur ta source ET sur ta cible.
M'enfin, c'est quoi ce Instr() que tu nous mets là ?
Je t'ai dit de virer ce Step -1 ridicule.
Parce que si je te dis d'étudier ça, tu fais quoi ?
En plus, j'ai optimisé tout ça :
Il faut que tu boucles sur ta source ET sur ta cible.
M'enfin, c'est quoi ce Instr() que tu nous mets là ?
Je t'ai dit de virer ce Step -1 ridicule.
Parce que si je te dis d'étudier ça, tu fais quoi ?
Dim ClasseurSource As Workbook Dim ClasseurCible As Workbook Dim FeuilleSource As Worksheet Dim FeuilleCible As Worksheet Dim CelluleSource As Range Dim CelluleCible As Range Set ClasseurSource = Workbooks.Open(Filename:="C:\Temp\1_MACRO_ffd\ClasseurA.xlsm", ReadOnly:=True) Set ClasseurCible = ThisWorkbook Set FeuilleSource = ClasseurSource.Worksheets("Feuil1") Set FeuilleCible = ClasseurCible.Worksheets("Feuil1") For Each CelluleSource In FeuilleSource.Range("D2", FeuilleSource.Cells(.Rows.Count, 4).End(xlUp)) For Each CelluleCible In FeuilleCible.Range("D2", FeuilleCible.Cells(.Rows.Count, 4).End(xlUp)) If CelluleSource.Text = CelluleCible.Text Then CelluleCible.Offset(, 8).Value = CelluleSource.Offset(, 8).Text End If Next Next ClasseurSource.Close SaveChanges:=False
En plus, j'ai optimisé tout ça :
Dim ClasseurSource As Workbook Dim PlageSource As Range Dim PlageCible As Range Dim CelluleSource As Range Dim CelluleCible As Range Set ClasseurSource = Workbooks.Open(Filename:="C:\Temp\1_MACRO_ffd\ClasseurA.xlsm", ReadOnly:=True) With ClasseurSource.Worksheets(1) Set PlageSource = .Range("D2", .Cells(65536, 4).End(xlUp)) End With With ThisWorkbook.Worksheets(1) Set PlageCible = .Range("D2", .Cells(65536, 4).End(xlUp)) End With For Each CelluleSource In PlageSource For Each CelluleCible In PlageCible If CelluleSource.Text = CelluleCible.Text Then CelluleCible.Offset(, 8).Value = CelluleSource.Offset(, 8).Text End If Next Next ClasseurSource.Close SaveChanges:=False
Salut à toi,
Avant que Zeb ne fasse son passage, je te conseille vivement d'aller lire ce petit post de zeb. Et après en avoir pris connaissance, faudra modifier ta demande si tu veux qu'elle soit correctement traitée.
Avant que Zeb ne fasse son passage, je te conseille vivement d'aller lire ce petit post de zeb. Et après en avoir pris connaissance, faudra modifier ta demande si tu veux qu'elle soit correctement traitée.
beru a dit :
Salut à toi,Avant que Zeb ne fasse son passage, je te conseille vivement d'aller lire ce petit post de zeb. Et après en avoir pris connaissance, faudra modifier ta demande si tu veux qu'elle soit correctement traitée.
Ok merci pour le tuyau.
Je suis allée prendre connaissance du règlement () et donc je vais reformuler ma demande.
J'ai deux classeurs :
- 1 fichier : nommé ClasseurA (= fichier archivé en fin de semaine)
- et 1 fichier : nommé ClasseurEnCours (=fichier de la semaine en cours)
Ces deux fichiers ont les mêmes intitulés au niveau des colonnes et le même nombre de colonne.
- Dans la colonne D, il y a les numéros des clients ; ex: cellule D1 = NumClient1, cellule D2 = NumClient2 ….
- Et dans la colonne L, il y a les commentaires. Chaque commentaire est unique à un client donné (donc à un numéro de client)
Quant aux lignes, leur nombre peut varier d'une semaine à l'autre.
En fait l'objectif est de recopier les commentaires dans le fichier archivé et puis de les coller sur mon fichier en cours. Et ce, s'il s'agit du même client.
Ex : Client1, qui a pour numéro : NumClient1 et pour commentaire Comment1 se trouve dans la ligne 25, dans le fichier archivé.
Mais dans le fichier EnCours, ce même client peut se trouver dans la ligne 29 (ou même il peut ne pas exister).
Je veux copier le commentaire Comment1 concernant le client1 qui se trouve dans le fichier "ClasseurA" et le coller dans le fichier ClasseurEnCours dans la ligne où se trouve le client1 et dans la colonne L (colonne où il y a les commentaires)
Tout ceci aurait pu être facile, pour moi, si les NumClient ne changent pas d'emplacement d'une semaine à l'autre.
Voici mon code (code de débutant), qui marche si les NumClient sont, chacun, à la même cellule dans le fichier "Classeur A" et dans le fichier "ClasseurEnCours"
Merci d'avance
J'ai deux classeurs :
- 1 fichier : nommé ClasseurA (= fichier archivé en fin de semaine)
- et 1 fichier : nommé ClasseurEnCours (=fichier de la semaine en cours)
Ces deux fichiers ont les mêmes intitulés au niveau des colonnes et le même nombre de colonne.
- Dans la colonne D, il y a les numéros des clients ; ex: cellule D1 = NumClient1, cellule D2 = NumClient2 ….
- Et dans la colonne L, il y a les commentaires. Chaque commentaire est unique à un client donné (donc à un numéro de client)
Quant aux lignes, leur nombre peut varier d'une semaine à l'autre.
En fait l'objectif est de recopier les commentaires dans le fichier archivé et puis de les coller sur mon fichier en cours. Et ce, s'il s'agit du même client.
Ex : Client1, qui a pour numéro : NumClient1 et pour commentaire Comment1 se trouve dans la ligne 25, dans le fichier archivé.
Mais dans le fichier EnCours, ce même client peut se trouver dans la ligne 29 (ou même il peut ne pas exister).
Je veux copier le commentaire Comment1 concernant le client1 qui se trouve dans le fichier "ClasseurA" et le coller dans le fichier ClasseurEnCours dans la ligne où se trouve le client1 et dans la colonne L (colonne où il y a les commentaires)
Tout ceci aurait pu être facile, pour moi, si les NumClient ne changent pas d'emplacement d'une semaine à l'autre.
Voici mon code (code de débutant), qui marche si les NumClient sont, chacun, à la même cellule dans le fichier "Classeur A" et dans le fichier "ClasseurEnCours"
Sub OuvrirClasseur()
Dim ClasseurSource As Workbook
Workbooks.Open Filename:="C:\Temp\1_MACRO_ffd\ClasseurA.xlsm"
Set ClasseurSource = ActiveWorkbook
Dim ClasseurCible As Workbook
Set ClasseurCible = ThisWorkbook
Dim i As Long
Dim j As Long
Dim FeuilleSource As Worksheet
Dim FeuilleCible As Worksheet
Set FeuilleSource = ClasseurSource.Worksheets("Feuil1")
Set FeuilleCible = ClasseurCible.Worksheets("Feuil1")
i = 2
For j = Cells(65536, 2).End(xlUp).Row To 2 Step -1
If FeuilleSource.Cells(j, 4).Text = FeuilleCible.Cells(j, 4) Then
FeuilleSource.Cells(j, 12).Copy FeuilleCible.Cells(j, 12)
i = i + 1
Else
End If
Next
ClasseurSource.Close
End Sub
Merci d'avance
Salut,
Wahooooo! jusqu'à la ligne 26, ce code est nickel.
Bon, après ça devient un peu plus brouillon.
D'abord, pourquoi ce Step -1 ? Ca n'empêche pas la macro de fonctionner, mais c'est vraiment le plaisir de se faire des noeuds au cerveau pour rien.
Ensuite toujours à la même ligne, à quelle feuille la méthode Cells() s'applique-t-elle ?
Ligne 33, tu précises la propriété Text pour l'une des cellule, pas pour l'autre. Sois plus précis
Ligne 34, tu écrases une mouche avec un marteau-pilon
Ceci devrait suffir
Euh, sans indiscrétion, à quoi te sert i ?
(La solution à ton problème est dans la réponse
)
Réponds à mes questions, essaye de débrouiller un peu ton problème avec les éléments que je te propose...
En attendant, je te prépare une soluce
Wahooooo! jusqu'à la ligne 26, ce code est nickel.
Bon, après ça devient un peu plus brouillon.
D'abord, pourquoi ce Step -1 ? Ca n'empêche pas la macro de fonctionner, mais c'est vraiment le plaisir de se faire des noeuds au cerveau pour rien.
Ensuite toujours à la même ligne, à quelle feuille la méthode Cells() s'applique-t-elle ?
Ligne 33, tu précises la propriété Text pour l'une des cellule, pas pour l'autre. Sois plus précis
Ligne 34, tu écrases une mouche avec un marteau-pilon
Ceci devrait suffir (A la réflexion, pourquoi pas ? Oublie ce que je viens de dire. Ta soluce n'est pas plus mal que ce que je te propose.)
FeuilleCible.Cells(j, 12).Value = FeuilleSource.Cells(j, 12).Text
Euh, sans indiscrétion, à quoi te sert i ?
(La solution à ton problème est dans la réponse
)Réponds à mes questions, essaye de débrouiller un peu ton problème avec les éléments que je te propose...
En attendant, je te prépare une soluce
Merci Zeb pour les idées.
Pour répondre à ta question, ce programme me permettrait de ne pas avoir à copier les commentaires manuellement d’une semaine à l’autre et d’un fichier à l’autre. Et ce tout en cherchant à chaque fois à quel client appartient un commentaire. De plus les clients changent de ligne d’une semaine à l’autre ou peuvent même disparaitre de mon fichier en cours, s’ils ont déjà réglé leur facture.
J’espère avoir bien répondu à ta question
merci
Pour répondre à ta question, ce programme me permettrait de ne pas avoir à copier les commentaires manuellement d’une semaine à l’autre et d’un fichier à l’autre. Et ce tout en cherchant à chaque fois à quel client appartient un commentaire. De plus les clients changent de ligne d’une semaine à l’autre ou peuvent même disparaitre de mon fichier en cours, s’ils ont déjà réglé leur facture.
J’espère avoir bien répondu à ta question
merci
Euh, en fait là, tu paraphrases ce que tu as déjà expliqué.
Les questions sont :
A quelle feuille la méthode Cells() s'applique-t-elle ?
A quoi te sert i ?
(T'inquiète, moi j'ai compris. Mais je voudrais que tu t'y penches, juste histoire que tu participes. C'est surtout pour ne pas me donner l'impression que je fais ton boulot à ta place -
)
Les demandes sont :
Sois plus précis
Débrouille un peu ton problème
Allez, un ptit effort de principe et je te propose une soluce....
Les questions sont :
(T'inquiète, moi j'ai compris. Mais je voudrais que tu t'y penches, juste histoire que tu participes. C'est surtout pour ne pas me donner l'impression que je fais ton boulot à ta place -
)Les demandes sont :
Allez, un ptit effort de principe et je te propose une soluce....
zeb a dit :
Euh, en fait là, tu paraphrases ce que tu as déjà expliqué.Les questions sont :
(T'inquiète, moi j'ai compris. Mais je voudrais que tu t'y penches, juste histoire que tu participes. C'est surtout pour ne pas me donner l'impression que je fais ton boulot à ta place -
)Les demandes sont :
Allez, un ptit effort de principe et je te propose une soluce....
excuse, j'avais pas compris.
alors pourr cells, il s'as'applique à la feuilleCible
Quant au i , il me sert de passer d'une ligne à l'autre
je suis en train te "débrouiller"
mon probleme, mais ça ne marche toujours pas. j'essay des tentatives
salut zeb,
j'ai rectifié le cells, qu'en penses tu ?
je me suis penché sur le i dont tu me parlais et je me suis dit que c'est lui le problème. il faut qu'Excel cherche la premiere valeur de la cellule D2 dans feuille source et puis la compare avec toutes les valeurs de la colonne D, si il trouve dans ce cas il fait le copieé collé. si pas trouvé il passe au suivant.
Et j'ai trouvé Instr dans l'aide, mais toujours rien, je suis desespérée
voici mon nouveau code
J'ai mis un autre "for i" mais ca ne marchait pas et je l'ai enlevé.
Je pense que tu m'as assez torturée !!
j'ai rectifié le cells, qu'en penses tu ?
je me suis penché sur le i dont tu me parlais et je me suis dit que c'est lui le problème. il faut qu'Excel cherche la premiere valeur de la cellule D2 dans feuille source et puis la compare avec toutes les valeurs de la colonne D, si il trouve dans ce cas il fait le copieé collé. si pas trouvé il passe au suivant.
Et j'ai trouvé Instr dans l'aide, mais toujours rien, je suis desespérée
voici mon nouveau code
Sub TEST()
'
'Ouvrir le classeur "classeurA" qui se trouve dans le chemin ci dessus. Et puis l'activer.
Dim ClasseurSource As Workbook
Workbooks.Open Filename:="\\A19TS-BREFYYKKZ\Utilisateurs\F9596924\Mes Documents\MACROS\ClasseurA.xls"
Set ClasseurSource = ActiveWorkbook
Dim ClasseurCible As Workbook
Set ClasseurCible = ThisWorkbook
Dim i As Long
Dim j As Long
Dim FeuilleSource As Worksheet
Dim FeuilleCible As Worksheet
Set FeuilleSource = ClasseurSource.Worksheets("Feuil1")
Set FeuilleCible = ClasseurCible.Worksheets("Feuil1")
i = 2
For j = FeuilleCible.Cells(65536, 2).End(xlUp).Row To 2 Step -1
If InStr(FeuilleSource.Cells(j, i).Text, FeuilleCible.Cells(j, i).Text) Then
FeuilleSource.Cells(j, i).Copy FeuilleCible.Cells(j, i)
i = i + 1
Else
End If
Next
ClasseurSource.Close
End Sub
J'ai mis un autre "for i" mais ca ne marchait pas et je l'ai enlevé.
Je pense que tu m'as assez torturée !!
attends je teste tout ca puis je te redis.
merci
Il faut que tu boucles sur ta source ET sur ta cible.
M'enfin, c'est quoi ce Instr() que tu nous mets là ?
Je t'ai dit de virer ce Step -1 ridicule.
Parce que si je te dis d'étudier ça, tu fais quoi ?
En plus, j'ai optimisé tout ça :
merci
zeb a dit :
Mais bien sûr qu'il faut ajouter un For i !!!!Il faut que tu boucles sur ta source ET sur ta cible.
M'enfin, c'est quoi ce Instr() que tu nous mets là ?
Je t'ai dit de virer ce Step -1 ridicule.
Parce que si je te dis d'étudier ça, tu fais quoi ?
Dim ClasseurSource As Workbook Dim ClasseurCible As Workbook Dim FeuilleSource As Worksheet Dim FeuilleCible As Worksheet Dim CelluleSource As Range Dim CelluleCible As Range Set ClasseurSource = Workbooks.Open(Filename:="C:\Temp\1_MACRO_ffd\ClasseurA.xlsm", ReadOnly:=True) Set ClasseurCible = ThisWorkbook Set FeuilleSource = ClasseurSource.Worksheets("Feuil1") Set FeuilleCible = ClasseurCible.Worksheets("Feuil1") For Each CelluleSource In FeuilleSource.Range("D2", FeuilleSource.Cells(.Rows.Count, 4).End(xlUp)) For Each CelluleCible In FeuilleCible.Range("D2", FeuilleCible.Cells(.Rows.Count, 4).End(xlUp)) If CelluleSource.Text = CelluleCible.Text Then CelluleCible.Offset(, 8).Value = CelluleSource.Offset(, 8).Text End If Next Next ClasseurSource.Close SaveChanges:=False
En plus, j'ai optimisé tout ça :
Dim ClasseurSource As Workbook Dim PlageSource As Range Dim PlageCible As Range Dim CelluleSource As Range Dim CelluleCible As Range Set ClasseurSource = Workbooks.Open(Filename:="C:\Temp\1_MACRO_ffd\ClasseurA.xlsm", ReadOnly:=True) With ClasseurSource.Worksheets(1) Set PlageSource = .Range("D2", .Cells(65536, 4).End(xlUp)) End With With ThisWorkbook.Worksheets(1) Set PlageCible = .Range("D2", .Cells(65536, 4).End(xlUp)) End With For Each CelluleSource In PlageSource For Each CelluleCible In PlageCible If CelluleSource.Text = CelluleCible.Text Then CelluleCible.Offset(, 8).Value = CelluleSource.Offset(, 8).Text End If Next Next ClasseurSource.Close SaveChanges:=False
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumCopier sous condition excel vba
- ForumExcel copier coller sous condition
- ForumCopier coller colonnes classeur excel vers autre classeur
- ForumCopier coller ligne sous condition dans excel
- ForumMacro copier coller ligne si condition
- ForumMacro copier coller cellule sous condition
- ForumOuvrir un classeur pour y copier coller donnees dans un autre
- ForumCopier coller colonnes d1 classeur excel vers autre
- ForumMacro renommer classeur copier et coller
- ForumMacro excel copier coller condition
- Voir plus
(<-- mais quel crâneur)