Copier coller de cellules entre fichiers suivant condition

Résolu
gregorydekimpe Messages postés 8 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 20 février 2008 - 19 févr. 2008 à 14:42
gregorydekimpe Messages postés 8 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 20 février 2008 - 20 févr. 2008 à 08:37
Bonjour à tous,

Bon j'ai un problème assez compliqué, et je commence vraiment à fatiguer alors...soyez indulgents svp ;-).

Bon en gros j'ai deux fichiers Excel (fichier A et B). En gros, je voudrais que dans A, il teste l'égalité d'une suite de cellules en colonne, avec une suite de cellule en ligne dans le fichier B (de longueur identique). Si l'égalité est vraie, alors copier la valeur qu'il y a 3 ligne en-dessous de la cellule de B, et la copier juste à droite de la colonne de A (colonneA+1). Savez-vous s'il y a moyen de faire celà? Je ne sais pas si j'ai été suffisament clair, j'avoue que je commence à m'embrouiller moi-même donc ça ne doit vraiment pas être évident à comprendre, j'en conviens.

Voici le code (brut) ou j'essaye juste de copier une des cellules, mais mes boucles sont-elles correctes?

    i = 1
    j = 1
   
    Selection.End(xlToRight).Select
    ColFin = ActiveCell.Column - 1
   
    For i = 3 To ColFin
    TestPct1 = Range(Cells(2, i)).Value
    Windows("Essai.xls").Activate
    'Selection.End(xlDown).Select
    'LigneFin = ActiveCell.Row
    LigneFinEssai = 37
        For j = 28 To LigneFinEssai
        TestPct2 = Range(Cells(j, 4)).Value
            If (TestPct1 = TestPct2) Then
            'Essai avec cellule C21 dans cellule G28'
            Windows("Totaux_2007_prevision_base12.xls").Activate
            VarCellule = Range("C21")
            Windows("Essai.xls").Activate
            Range("G28") = VarCellule
            'Range(Cells(28, 7), Cells(28 + i - 3, 7)) = VarCellule
            End If
        Next
    Next

Un grand merci d'avance!!!

3 réponses

nanardino64 Messages postés 131 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 17 mars 2010
19 févr. 2008 à 19:22
Salut,
c'est pas clair du tout même
en fait si la cellule de A et la cellule de B ont la même valeur tu veux recopier cette valeur à droite de la cellule de A et trois lignes en dessous de la cellule de B ? Pourquoi faire ?
Et puis tu veux comparer la cellule "A1" de A avec toutes les cellules de B ou la cellule "A1" de A avec "A1" de B puis "A2" de A avec "B1" de B... à préciser
i=1 et j=1 ne sert à rien vu que tu leur donnes une valeur avec ta boucle
TestPct1 = Range(Cells(2, i)).Value, range ne sert à rien soit tu l'utilises pour nommer les cellules avec a, b, c... soit pour définir une plage de cellule en le combinant avec Cells mais pas pour une seule cellule
--> TestPct1 = Cells(2, i).Value
Utilises workbooks à la place de windows et aussi tu n'as pas besoin d'activer ton classeur, il suffit de lui dire où regarder : workbooks("").sheets("").cells(i,j) alors que dans ton code on ne voit pas de nom de feuilles
du coup VarCellule ne sert à rien

   Selection.End(xlToRight).Select
    ColFin = ActiveCell.Column - 1
   
    For i = 3 To ColFin
    TestPct1 = Cells(2, i).Value
    Windows("Essai.xls").Activate
    LigneFinEssai = 37
        For j = 28 To LigneFinEssai
        TestPct2 = Cells(j, 4).Value
            If TestPct1 = TestPct2 Then

            'Essai avec cellule C21 dans cellule G28'
            Workbooks("Essai.xls").sheets("???").Range("G28") .Value=Workbooks("Totaux_2007_prevision_base12.xls").sheets("???").Range("C21").Value

            End If
        Next j
    Next i

Nanardino64
Développons-nous, développeurs.
3
gregorydekimpe Messages postés 8 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 20 février 2008
19 févr. 2008 à 16:15
Petite erreur : i=3
0
gregorydekimpe Messages postés 8 Date d'inscription mercredi 13 février 2008 Statut Membre Dernière intervention 20 février 2008
20 févr. 2008 à 08:37
Merci beaucoup de ton aide! En fait je voulais tester si une donnée (dans un "vecteur ligne") du fichier A était égale à une donnée (d'un "vecteur colonne") du fichier B, et si tel était le cas, recopier ce qu'il y avait 3 lignes en-dessous de Ai (i=1,...,n), donc Di (tout cela du fichier A), dans une colonne à droite de mon "vecteur colonne" du fichier B. Je ne sais pas si c'est bcp plus clair, c'est compliqué à expliquer, mais en tous cas après quelques bidouillages ta solution m'a bien aidée!


 


Merci beaucoup!
0
Rejoignez-nous