Se connecter avec
S'enregistrer | Connectez-vous

Copier&coller des cellules d'1 fichier à 1autre si condition remplie

Dernière réponse : dans Programmation

Bonjour a tous
je souhaiterai une macro me permettant de:
Parcourir tous les fichiers se trouvant dans un dossier. Pour chaque fichier, si le contenu de la cellule G = « total de la semaine en cours », alors il faut copier les cellules H, I, J et K (de la même ligne que G). Puis il faudra les coller dans le thisworkbook et les coller dans les H, I, J et K si la G = « total de la semaine dernière ».

Est-ce possible ?
N’est-il pas plus simple de passer par un formulaire ?

Voici mon début de code qui me permet de parcourir les fichiers. En cherchant un peu sur ce forum même, j’ai trouvé cela et puis je l'ai adapté un peu.
  1. Sub CopierCell()
  2. Dim FSO As New FileSystemObject
  3. Dim FichierALire As File
  4.  
  5. Dim FichierSource As Workbook
  6. Dim FichierCible As Workbook
  7. Dim FeuilSource As Worksheet
  8. Dim FeuilCible As Worksheet
  9. Dim CellSource As Range
  10. Dim CellCible As Range
  11. Dim DernCellCible As Range
  12.  
  13. Set FichierCible = ThisWorkbook
  14.  
  15. For Each FichierALire In FSO.GetFolder("CHEMIN").Files
  16. ' Ne tenir compte que des fichiers xls
  17. If UCase(FichierALire.Name) Like "*.XLS" Then
  18. ' Ouvrir le fichier en lecture seule
  19. Set FichierSource = Workbooks.Open(FichierALire.Path, ReadOnly:=True)
  20. 'On copie et on colle
  21. FichierSource.Worksheets(1).Cells().Copy Destination:=FichierCible.Worksheets(1).cells()'??????
  22.  
  23. 'On ferme le fichier source sans tenir compte d'éventuels changements?!
  24. FichierSource.Close SaveChanges:=False
  25. End If
  26. Next
  27. End Sub


Merci d'avance
Lassé par la pub ? Créez un compte

Meilleure solution

Expert Programmation

:hello: 

Ligne 12, tu te sers d'une cellule, CellCible et tu te décales par rapport à elle grâce à la méthode Offset. Sers-toi de ça pour mieux te décaler !
Expert Programmation

Salut,

Je ne vois pas dans ton code la transcription de
Citation :
si le contenu de la cellule G = « total de la semaine en cours »
Et je ne vois pas d'information concernant la ligne, ni pour la source, ni pour la cible.

A la ligne 21, il faut se servir d'un Range() plutôt que d'un Cells().
Expert Programmation

Evidemment que c'est possible. Tout est possible en programmation. VBA intègre VB tout de même ! Et VB peut accéder à toute l'API de Windows... Excuse du peu.

Puis-je t'aider ?

Bon je vais réexpliquer mon problème pour être plus précise
J’extraits un fichier toutes les semaines. Je le nomme « AZER S19 » (.xls) puis je l’enregistre dans un dossier dans mes documents.
Dans ce fichier y’a des cellules que je voudrais copier. Ces cellules se trouvent en colonnes H, I, J et K mais à n’importe quelle ligne. Je m’explique ; par ex :
- mon fichier de la semaine 18 qui se nomme « AZER S18 » a ses cellules :
G… contient « Total de la semaine en cours »
H… contient « 8 000 »
I… contient « 3 000 »
J… contient « 2 500 »
K… contient « 1 500 »

- mon fichier de la semaine 19 qui se nomme « AZER S19 » a ses cellules :
G… contient « Total de la semaine en cours »
H… contient « 10 000 »
I… contient « 5 000 »
J… contient « 2 500 »
K… contient « 2 500 »

Mon fichier de la semaine 20 qui se nomme « AZER S20 » veut copier les cellules H…, I…, J… et K… du fichier « AZER S19 » et les coller à coté de la cellule G… qui contient « «Total de la semaine 19 ».
Et aussi copier les mêmes types de cellules du fichier « AZER S18 » et les coller à coté de la G… qui contient « Total de la semaine 18 ».
Ainsi de suite …

Jusque là, je n’ai réussi qu’à parcourir tous mes fichiers semestriels
1ere question : comment copier ces éléments et les coller ?
2eme : je pensais créer un fichier qui reprend tous ces éléments pour chaque fichier créé et qui sert de fichier transmission. N’est ce pas mieux ?

Zeb, lis le avec une boite de chocolat à coté de toi pour éviter une très forte migraine. ;) 
  1. Sub CopierCell()
  2. Dim FSO As New FileSystemObject
  3. Dim FichierALire As File
  4.  
  5. Dim i As Integer
  6.  
  7. Dim FichierSource, FichierCible As Workbook
  8. Dim FeuilCible As Worksheet
  9. Dim CellSource, CellCible, DernCellCible As Range
  10.  
  11. Set FichierCible = ThisWorkbook
  12. Set FeuilCible = ThisWorkbook.Worksheets(1)
  13.  
  14. For Each CellCible In FeuilCible.Range("G2", FeuilCible.Cells(.Rows.Count, 7).End(xlRight))
  15. For Each FichierALire In FSO.GetFolder("chemin").Files
  16. ' Ne tenir compte que des fichiers xls
  17. If UCase(FichierALire.Name) Like "*.XLS" Then
  18. ' Ouvrir le fichier en lecture seule
  19. Set FichierSource = Workbooks.Open(FichierALire.Path, ReadOnly:=True)
  20. 'On copie et on colle si G ="Total de la semaine en cours"
  21. For i = 2 To FichierSource.Worksheets(1).Cells(FichierSource.Worksheets(1).Rows.Count, 7).End(xlUp)
  22. If FeuilSource.Cells(i, 7).Text = "Total de la semaine en cours" Then
  23. Cells(i, 8).Copy Destination:=CellCible
  24. End If
  25. Next
  26. 'Chercher la dernière cellule de la feuille source qui est la nouvelle cellule
  27. Set DernCellCible = FichierSource.Worksheets(1).Range(FichierSource.Worksheets(1).CellCible.Count, 7).End(xlRight)
  28.  
  29. 'On ferme le fichier source sans tenir compte d'éventuels changements?!
  30. FichierSource.Close SaveChanges:=False
  31. End If
  32. Next
  33. Next
  34. End Sub
Expert Programmation

salut fopy 12

ligne 23 défini la cellule plus précisément. et la copie peut se passer du "destination" :

  1. If FeuilSource.Cells(i, 7).Text = "Total de la semaine en cours" Then
  2. FeuilleSource.Cells(i, 8).Copy CellCible
  3. End If


Pour trouve ta cellule cible, tu utlise un range. si tes cellules de destinations ont la meme adresse, sert toi d' .Offset()

Je vais peut etre dire une betise mais pour copier il ne suffit peut etre pas d'ouvrir en read only. (point a vérifier..)

ligne 20 :
il faut que le texte de ta cellule "Total de la semaine" soit exact (majuscule/ minuscule/espaces...)

Je rajoute que tu ferais bien d'utiliser l' "OPTION EXPLICIT" sur chacune de tes feuilles VBA, ca t'aidera a repérer les erreurs de définitions des variables. (ligne 14 par exemple..)
Expert Programmation

Je suis d'accord avec Ooz' : On peut se passer de Destination:= dans Copy(), mais ça fixe les idées, effectivement, t'as dit une bêtise, il faut être exact et l'Option explicit est obligatoire !
Expert Programmation

:lol: 
Un extrait de code suffit amplement, et ajouter les noms des paramètres n'est pas une erreur en soit. Au contraire, les mettre ou pas devient un style d'écriture.

  1. Dim FSO As New FileSystemObject
  2. Dim FichierALire As File
  3. Dim i As Integer
  4. ' // Pas bon. Il faut remettre le type après chaque variable !!!
  5. ' // Je te propose de ne pas confondre "Fichier" et "Classeur"
  6. Dim FichierSource, FichierCible As Workbook
  7. ' // Pas bon. Il faut remettre le type après chaque variable !!!
  8. Dim CellSource, CellCible, DernCellCible As Range
  9. Dim FeuilCible As Worksheet
  10.  
  11. ' // Euh, t'en fait trop là, en fait ;^) Mais pourquoi pas.
  12. Set FichierCible = ThisWorkbook
  13. ' // Soit tu en fais des tonnes et tu utilises ta variable, soit tu te contentes de ThisWorkbook
  14. Set FeuilCible = ThisWorkbook.Worksheets(1)
  15.  
  16. ' // Il manque un --chocolat-- un truc, là, non ?
  17. ' // ---------------------------v
  18. For Each CellCible In FeuilCible.Range("G2", FeuilCible.Cells(.Rows.Count, 7).End(xlRight))
  19. ' // Si "chemin" est là pour nous faire comprendre sans avoir à dévoiler des données perso, tu as très bien fais ;^)
  20. For Each FichierALire In FSO.GetFolder("chemin").Files
  21. If UCase(FichierALire.Name) Like "*.XLS" Then
  22. Set FichierSource = Workbooks.Open(FichierALire.Path, ReadOnly:=True)
  23. ' // Rholala ce que c'est lourd. Utilise une variable ou Un With.... Ou pas, t'as le droit de faire comme ça ;^)
  24. For i = 2 To FichierSource.Worksheets(1).Cells(FichierSource.Worksheets(1).Rows.Count, 7).End(xlUp)
  25. ' // Ca n'exite pas, FeuilSource.
  26. ' // Ou alors nous n'avons qu'un extrait,
  27. ' // Ou alors il manque l'Option Explicit et ton erreur est là. ET C'EST MAL !!!! >:^(
  28. If FeuilSource.Cells(i, 7).Text = "Total de la semaine en cours" Then
  29. Cells(i, 8).Copy CellCible
  30. End If
  31. Next
  32. ' // Ca sert à quoi ce truc ? Tu vas le fermer ce classeur
  33. Set DernCellCible = FichierSource.Worksheets(1).Range(FichierSource.Worksheets(1).CellCible.Count, 7).End(xlRight)
  34. FichierSource.Close SaveChanges:=False
  35. End If
  36. Next
  37. Next

Partout où il n'y a pas de vert, c'est que je ne trouve rien à redire :D 

Bonjour zeb
Apres quelques réctifications, voila ce que j'ai.
jecommence sérieusement à me facher apres VB :fou:  mais bon comme c mon anniversaire today, j'arrive à me retenir :D 
  1. Option Explicit
  2. Sub essai2()
  3.  
  4. Dim FSO As New FileSystemObject
  5. Dim FichierALire As File
  6. Dim i As Integer
  7.  
  8. ' // -->Ok, J'ai mis le type après chaque variable
  9. ' // Je te propose de ne pas confondre "Fichier" et "Classeur"
  10. '// -->ok c'est noté, mais je l'avoue je ne vois pas trop la différence : classeur pour excel et fichier = tout type?
  11. Dim FichierSource As Workbook
  12. Dim FichierCible As Workbook
  13.  
  14. '// -->Ok, J'ai mis le type après chaque variable
  15. Dim CellSource As Range
  16. Dim CellCible As Range
  17.  
  18. Dim FeuilCible As Worksheet
  19. Dim FeuilSource As Worksheet
  20.  
  21. '// --> j' en fais des tonnes et j'utilise ma variable :)
  22. Set FichierCible = ThisWorkbook
  23. Set FeuilCible = FichierCible.Worksheets(1)
  24.  
  25. ' // Il manque un --chocolat-- un truc, là, non ?
  26. '// --> Mais qu'est ce qui peut bien manquer par ici??? Peut etre ces 3 lignes suivants ???
  27. With FichierCible.Worksheets(1)
  28. Set CellCible = .Range("G2", FeuilCible.Cells(.Rows.Count, 7).End(xlUp))
  29. End With
  30.  
  31. For Each CellCible In FeuilCible
  32. ' // Si "chemin" est là pour nous faire comprendre sans avoir à dévoiler des données perso, tu as très bien fais ;^)
  33. '// --> OUI C'EST EXATEMENT CELA ;^)
  34. For Each FichierALire In FSO.GetFolder("chemin").Files
  35. If UCase(FichierALire.Name) Like "*.XLS" Then
  36. Set FichierSource = Workbooks.Open(FichierALire.Path, ReadOnly:=True)
  37. With FichierSource.Worksheets(1)
  38. Set CellSource = .Range("G2", .Cells(65536, 7).End(xlUp))
  39. End With
  40. For Each FeuilSource In FichierSource
  41. If CellSource.Value = "Total de la semaine en cours" Then
  42. CellSource.Copy CellCible
  43. End If
  44. Next
  45. FichierSource.Close SaveChanges:=False
  46. End If
  47. Next
  48. Next
  49. End Sub

Qu'en penses-tu?
Expert Programmation

>> ok c'est noté, mais je l'avoue je ne vois pas trop la différence : classeur pour excel et fichier = tout type?

Le fichier est un truc sur disque, susceptible d'être ouvert par EXCEL si son extention est XLS
  1. Dim FichierSource As File


Le classeur est un objet particulier en VB (ouvert par Excel, mais ça, c'est un détail).
  1. Dim classeurSource As Workbook
  2. Dim classeurCible As Workbook


Tu ne peux pas avoir une méthode qui commence par un point sans précision de l'objet sur lequel elle s'applique en dehors d'un With.


:hello: 
ça ne marche toujours pas? Ou est le problème ? :fou: 
  1. Option Explicit
  2. Sub essai3()
  3.  
  4. Dim FSO As New FileSystemObject
  5. Dim FichierALire As File
  6. Dim i As Integer
  7.  
  8. Dim FichierSource As Workbook
  9. Dim FichierCible As Workbook
  10.  
  11. Dim CellSource As Range
  12. Dim CellCible As Range
  13.  
  14. Dim FeuilCible As Worksheet
  15. Dim FeuilSource As Worksheet
  16.  
  17. Set FichierCible = ThisWorkbook
  18. Set FeuilCible = FichierCible.Worksheets(1)
  19.  
  20. Set CellCible = FeuilCible.Range("G2", FeuilCible.Cells(.Rows.Count, 7).End(xlUp))
  21.  
  22. For Each CellCible In FeuilCible
  23. For Each FichierALire In FSO.GetFolder("chemin").Files
  24. If UCase(FichierALire.Name) Like "*.XLS" Then
  25. Set FichierSource = Workbooks.Open(FichierALire.Path, ReadOnly:=True)
  26. With FichierALire.Worksheets(1)
  27. Set CellSource = .Range("G2", .Cells(65536, 7).End(xlUp))
  28. End With
  29. If CellSource.Value = "Total de la semaine en cours" Then
  30. CellSource.Offset(, 8).Value = CellCible.Offset(, 8).Text
  31. End If
  32. FichierSource.Close SaveChanges:=False
  33. End If
  34. Next
  35. Next
  36. End Sub

Merci de ton aide!!
Expert Programmation

LIGNE 26. Rholala, je t'ai dit de ne pas confondre fichier et classeur exprès pour éviter ce genre d'erreur. Un fichier plein de 0 et de 1, ne contient pas de feuille.
Ce même fichier, s'il est ouvert par Excel, ça devient effectivement un classeur plein de feuilles et de cellules. Alors tu relis mon message précédent et tu t'en inspires.

Pis "ça marche pas", c'est pas suffisant !

M'enfin, si je vous dit de faire un truc ou un autre, ce n'est pas pour assouvir un besoin d'autorité mal placée. Ce ne sont pas des ordres que je vous donne, mais essayez quand même de les suivre. En plus, je me justifie à chaque fois quand je propose quelque chose :pfff: 

(Eh ben, heureusement que je t'ai "offert" des chocolats hier :/  )

---------------

Par ailleurs, l'ordre des For, lignes 22 et 23 ne me semble pas pertinent.

:hello: 
ligne 26, j'ai compris l'erreur, j'ai corrigé.
sinon, le problème est que le code tourne bien, sans me signaler d'erreur. par contre je n'ai pas de résultats : je veux dire que je n'ai pas la valeur de cellsource dans cellvalue.
Voici mon nouveau code
  1. Option Explicit
  2. Sub essai3()
  3.  
  4. Dim FSO As New FileSystemObject
  5. Dim FichierALire As File
  6. Dim i As Integer
  7.  
  8. Dim FichierSource As Workbook
  9. Dim FichierCible As Workbook
  10.  
  11. Dim CellSource As Range
  12. Dim CellCible As Range
  13.  
  14. Dim FeuilCible As Worksheet
  15. 'Dim FeuilSource As Worksheet
  16.  
  17. Set FichierCible = ThisWorkbook
  18. Set FeuilCible = FichierCible.Worksheets(1)
  19.  
  20. Set CellCible = FeuilCible.Range("G2", FeuilCible.Cells(65536, 7).End(xlUp))
  21.  
  22. For Each FichierALire In FSO.GetFolder("Chemin").Files
  23. If UCase(FichierALire.Name) Like "*.XLS" Then
  24. Set FichierSource = Workbooks.Open(FichierALire.Path, ReadOnly:=True)
  25. With FichierSource.Worksheets(1)
  26. Set CellSource = .Range("G2", .Cells(65536, 7).End(xlUp))
  27. End With
  28.  
  29. If CellCible.Text = "Total des retards de la semaine en cours" Then
  30. CellSource.Offset(, 8).Value = CellCible.Offset(, 8).Value
  31. End If
  32.  
  33. FichierSource.Close SaveChanges:=False
  34. End If
  35. Next
  36. End Sub
Expert Programmation

A relire ;) 
  1. Dim FSO As New FileSystemObject
  2. Dim FichierALire As File
  3. '// Dim i As Integer '// Inutile
  4.  
  5. Dim ClasseurSource As Workbook '// Je l'appelle classeur pour fixer les idées
  6. Dim ClasseurCible As Workbook '// Pareil
  7. Dim CellSource As Range
  8. Dim CellCible As Range
  9. Dim FeuilCible As Worksheet
  10. Dim FeuilSource As Worksheet '// Ca, c'est nouveau, mais c'est pour faire symétrique
  11.  
  12. Set ClasseurCible = ThisWorkbook '// [CIBLE] Classeur
  13. Set FeuilCible = ClasseurCible.Worksheets(1) '// [CIBLE] Feuille
  14. Set CellCible = FeuilCible.Range("G2", FeuilCible.Cells(65536, 7).End(xlUp)) '// [CIBLE] Cellule
  15.  
  16. For Each FichierALire In FSO.GetFolder("Chemin").Files
  17. If UCase(FichierALire.Name) Like "*.XLS" Then
  18. Set ClasseurSource = Workbooks.Open(FichierALire.Path, ReadOnly:=True) '// [SOURCE] Classeur
  19. Set FeuilSource = ClasseurSource.Worksheets(1) '// [SOURCE] Feuille
  20. Set CellSource = FeuilSource.Range("G2", FeuilSource.Cells(65536, 7).End(xlUp)) '// [SOURCE] Cellule
  21.  
  22. '// ???? T'es sûre qu'il faut lire la cible
  23. If CellCible.Text = "Total des retards de la semaine en cours" Then
  24. '// ???? T'es sûre qu'il faut écrire dans la source ?
  25. CellSource.Offset(, 8).Value = CellCible.Offset(, 8).Value
  26. End If
  27.  
  28. ClasseurSource.Close SaveChanges:=False
  29. End If
  30. Next

:hello: 
'J'ai modifié ceci
  1. If CellSource.Text = "Total des retards de la semaine en cours" Then
  2. If CellCible.Text = "Total de la semaine dernière" Then ' //j'ai ajouté une nouvelle condition
  3. CellCible.Offset(, 8).Value = CellSource.Offset(, 8).Value
  4. End If
  5. End If

et toujours rien , je suis désespérée :??: 
Expert Programmation

....

Barde ton code de MsgBox pour savoir par où il passe.
Exemple :
  1. For Each FichierALire In FSO.GetFolder("Chemin" ).Files
  2. If UCase(FichierALire.Name) Like "*.XLS" Then
  3. Set ClasseurSource = Workbooks.Open(FichierALire.Path, ReadOnly:=True)
  4. Set FeuilSource = ClasseurSource.Worksheets(1)
  5. Set CellSource = FeuilSource.Range("G2", FeuilSource.Cells(65536, 7).End(xlUp))
  6. MsgBox "J'ouvre le fichier '" & FichierALire.Name & "'" & vbCrLf &
  7. "et je m'intéresse à la plage " & CellSource.Address
  8. If CellSource.Text = "Total des retards de la semaine en cours" Then
  9. MsgBox "La cellule " & CellSource.Address & " contient 'Total des retards...'" & vbCrLf &
  10. "Je m'apprête à copier la cellule " & CellSource.Offset(, 8).Address & " dans la cellule " & CellCible.Offset(, 8).Address
  11. CellCible.Offset(, 8).Value = CellSource.Offset(, 8).Value
  12. End If
  13. ClasseurSource.Close SaveChanges:=False
  14. End If
  15. Next


EDIT: Et bien juste en écrivant ces MsgBox, on s'aperçoit qu'on définit une plage à la ligne 5, et non pas une cellule. Il faut la parcourir cette la plage !

  1. For Each FichierALire In FSO.GetFolder("Chemin" ).Files
  2. If UCase(FichierALire.Name) Like "*.XLS" Then
  3. Set ClasseurSource = Workbooks.Open(FichierALire.Path, ReadOnly:=True)
  4. Set FeuilSource = ClasseurSource.Worksheets(1)
  5. Set cellules_S = FeuilSource.Range("G2", FeuilSource.Cells(65536, 7).End(xlUp))
  6. MsgBox "J'ouvre le fichier '" & FichierALire.Name & "'" & vbCrLf &
  7. "et je m'intéresse à la plage " & cellules_S.Address
  8. For Each cellSource In cellules_S
  9. If CellSource.Text = "Total des retards de la semaine en cours" Then
  10. MsgBox "La cellule " & CellSource.Address & " contient 'Total des retards...'" & vbCrLf &
  11. "Je m'apprête à copier la cellule " & CellSource.Offset(, 8).Address & " dans la cellule " & CellCible.Offset(, 8).Address
  12. CellCible.Offset(, 8).Value = CellSource.Offset(, 8).Value
  13. End If
  14. Next
  15. ClasseurSource.Close SaveChanges:=False
  16. End If
  17. Next

:hello: 
je crois avoir trouvé le soucis.
en fait il copie la bonne valeur dans le classeur source. par contre il ne la colle pas à la bonne cellule dans le classeurcible.
a la place, il la colle dans toute la plage : I2 jusqu'à la dernière cellule active de la colonne I. comment lui faire savoir qu'il faut coller la valeur copiée à coté de la cellule contenant "Total de la semaine dernière"?
Merci d'avance

:bounce: 
ca marche, Peut etre c'est mal écrit...??
maintenant je dois tester sur plusieurs fichiers. je crois que ca doit etre le même principe , non?

  1. Option Explicit
  2. Sub essai5()
  3.  
  4. Dim FSO As New FileSystemObject
  5. Dim FichierALire As File
  6.  
  7. Dim ClasseurSource As Workbook
  8. Dim ClasseurCible As Workbook
  9. Dim CellSource As Range
  10. Dim CellCible As Range
  11. Dim cellules_S As Range
  12. Dim cellules_F As Range
  13. Dim FeuilCible As Worksheet
  14. Dim FeuilSource As Worksheet
  15.  
  16. Set ClasseurCible = ThisWorkbook
  17. Set FeuilCible = ClasseurCible.Worksheets(1)
  18. Set cellules_F = FeuilCible.Range("G2", FeuilCible.Cells(65536, 7).End(xlUp))
  19.  
  20. For Each FichierALire In FSO.GetFolder("Chemin").Files
  21. If UCase(FichierALire.Name) Like "*.XLS" Then
  22. Set ClasseurSource = Workbooks.Open(FichierALire.Path, ReadOnly:=True)
  23. Set FeuilSource = ClasseurSource.Worksheets(1)
  24. Set cellules_S = FeuilSource.Range("G2", FeuilSource.Cells(65536, 7).End(xlUp))
  25. For Each CellSource In cellules_S
  26. If CellSource.Text = "Total des retards de la semaine en cours" Then
  27. For Each CellCible In cellules_F
  28. If CellCible = "Total de la semaine dernière" Then
  29. CellCible.Offset(, 1).Value = CellSource.Offset(, 1).Value
  30. CellCible.Offset(, 2).Value = CellSource.Offset(, 2).Value
  31. CellCible.Offset(, 3).Value = CellSource.Offset(, 3).Value
  32. CellCible.Offset(, 4).Value = CellSource.Offset(, 4).Value
  33. End If
  34. Next
  35. End If
  36. Next
  37. ClasseurSource.Close SaveChanges:=False
  38. End If
  39. Next
  40.  
  41. End Sub
Expert Programmation

Ahhhhh :) 
Voilà qui est très bien.

On peut toujours faire des remarques si on cherche bien :
  • L'indentation n'est pas parfaite.
  • Je trouve le nom cellules_F peu pertinent. Il s'agit de l'ensemble des cellules utile de la colonne G de la feuille cible. Alors autant l'appeler ColonneGCible ou un truc comme ça. Si tu as une logique pour justifier le F, pani pwoblem.
  • Les lignes 29 à 32 sont identiques. Pour 4 lignes, c'est du luxe, mais on peut quand même écrire :
    1. For i = 1 To 4
    2. CellCible.Offset(, i).Value = CellSource.Offset(, i).Value
    3. Next


    Comment ça je pinaille ??? :o  ... [:patch]
    Lassé par la pub ? Créez un compte