COMPARER CELLULES ET COPIER COLLER

Résolu
philric Messages postés 36 Date d'inscription jeudi 6 mai 2010 Statut Membre Dernière intervention 28 septembre 2012 - 2 mars 2010 à 12:07
philric Messages postés 36 Date d'inscription jeudi 6 mai 2010 Statut Membre Dernière intervention 28 septembre 2012 - 4 mars 2010 à 12:15
Bonjour

tout d'abord je n'y connais pas grand chose en VB! alors si quelqu'un pouvait me donner un coup de main..
j'ai un classeur excel avec 5 feuilles dans la feuille 5 colonne C (4210 lignes) je dois comparer chaque cellule avec chaque cellule colonne C (max 300 lignes) des feuilles 1,2,3,4 quand la cellule est identique il me faut copier la cellule colonne F correspondante de la feuille 5 et la coller dans la cellule de l'autre feuille
correspondante colonne H

j'ai trouve ce code qui sert a colorier des cellules et qui semble pouvoir être un bon départ mais je ne sait pas comment l'adapter

merci de votre aide
phil

Sub Macro1()
Dim i As Integer
i = 2
While i < 20
If Worksheets("Feuil5").Range("C" + CStr ).Value <> Worksheets("Feuil1").Range("C" + CStr ).Value Then
Worksheets("Feuil1").Activate
Worksheets("Feuil1").Range("C" + CStr ).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
i = i + 1
Wend

26 réponses

philric Messages postés 36 Date d'inscription jeudi 6 mai 2010 Statut Membre Dernière intervention 28 septembre 2012
3 mars 2010 à 18:13
non,non regarde les premiers post du 02/03 12h07.02 et 13h37.26 j'ai toujours dit qu'il fallait copier la valeur F de la feuille 5 et la coller dans la cellule H de la feuille correspondante
en fait je pense que tu l'a compris j'ai dans la feuille 5 colonne F tous les poids de mes articles, et je doit les attribuer dans la colonne H des autre feuilles quand les références correspondent
pour le reste le bouton de commande j'ai en effet essayé de le créer au début mais comme ca n'allait pas je l'ai mis dans la macro
pour les plage j'ai volontairement laissé tes plages juste pour faire un essai voit mon post du 03/03 12h40.39
phil
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 mars 2010 à 18:41
Bon...
Je te fais çà après déjeuner :
1) modifier en conséquence (F vers H et non H vers F)
2) l'adapter à tes ranges, tels qu'ils sont (et ce d'autant que tu n'as pas le même nombre de lignes dans toutes tes colonne F des feuilles 1 à 4)
Je ne vais pas te retourner ton fichier corrigé car :
1) personne d'autre que toi ne verrait la solution (et ce n'est pas le but d'un forum)
2) je veux éviter des difficultés de versions différentes entre toi et moi
Il te suffira d'écraser le code de ta macro1 par le nouveau code adapté à ton fichier.
A plus...
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 mars 2010 à 19:00
Mon épouse m'ayant dit qu'elle serait en retard, je m'y suis mis avant le dîner ===>>
Voilà :
Private dico As Object ' >>>> à mettre tout en haut (partie déclarations)

Sub Macro1()
  Dim i As Integer
  tablo Sheets(5).Range("C1:C" & Sheets(5).UsedRange.Rows.Count).Value '>> toi, remplace cette plage par la tienne (celle de Feuil 5à
  Set dico = CreateObject("Scripting.Dictionary")
  Application.ScreenUpdating = False
  For i = 1 To UBound(tablo, 1)
      If Not dico.exists(tablo(i, 1)) Then dico.Add tablo(i, 1), i
  Next
  For i 1 To 4 '>> nous n'allons traiter qyue les feuilles 1 à 4
    fouillons i, "C", 5
  Next
  Application.ScreenUpdating = True
  Set dico = Nothing
End Sub

Private Sub fouillons(NF As Integer, C As String, ifeuil As Integer)
 Dim i  As Integer
 letabl = Sheets(NF).Range(C & "1:" & C & Sheets(NF).UsedRange.Rows.Count).Value
 For i = 1 To UBound(letabl, 1)
    If dico.exists(letabl(i, 1)) Then
      Sheets(NF).Range("H" & i).Value = Sheets(ifeuil).Range("F" & dico(letabl(i, 1))).Value
    End If
 Next
End Sub

Testé en réel (sur ton fichier) ===>> moins de deux secondes de traitement (sur ma vieille bécane à bout de souffle et résultats attendus en traitement de la totalité de tes feuilles ...
Je sais que tu vas avoir des difficultés à suivre ce code, mais d'autres manières de procéder conduiraient à un temps d'exécution bien plus grand (beaucoup beaucoup).
Bon appétit.
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
philric Messages postés 36 Date d'inscription jeudi 6 mai 2010 Statut Membre Dernière intervention 28 septembre 2012
4 mars 2010 à 11:09
bonjour

pourrait tu me renvoyer mon classeur modifié car avec la meilleur volonté j'y arrive pas et j'aimerais bien trouver ou ca cloche, avec mon vieux excel j'avais fait quelque macro et je m'en sortait pas trop mal mais maintenant j'ai excel 2007 l'environnement est diffèrent et je peine a m'y retrouver!..
phil
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 mars 2010 à 11:27
Ca tombe bien : je te retourne donc ton fichier en version Excel 2007 !
J'en profite pour t'y ajouter également un bouton de commande sur ta feuille 5 (tu auras ainsi la possibilité, à ton gré, soit de lancer la macro1, soit de cliquer sur Commandbutton1) ...

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 mars 2010 à 11:35
Vouilà (je viens de te l'envoyer).
Confirme-moi s'il te plait :
1) que tu l'as bien reçu
2) que tout va bien

Afin que je puisse "faire le ménage" nécessaire (suppression) sur mon disque dur.
si tout va bien : n'oublie pas de cliquer sur réponse acceptée.
Merci.


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Rejoignez-nous