Copier une cellule en fonction d'autres cellules

Résolu
siamens_duj Messages postés 212 Statut Membre -  
siamens_duj Messages postés 212 Statut Membre -
Bonjour, je fais appel à vous car je bloque sur un problème.

J'ai plusieurs feuilles dans un même classeur.

Dans la feuille "COR" je récapitules certaines correspondances entre les feuilles.

J'ai dans cette feuille, en colonne N la concaténation des cellules D, E et G. Je fais ensuite
la copie de ces valeurs en colonne M (afin de ne plus avoir la formule mais seulement les valeurs).

Dans la feuille "TXT", en colonne Y, je fais la concaténation des cellules B, C et D et je fais là
aussi une copie des valeurs en colonne Z.

Les champs de concaténation correspondent dans les deux cas au champs Nom, Prenom, et ID.

Je voudrais faire en sorte que si la valeur de la cellule en colonne M de la feuille "COR" est
égale à la valeur de la cellule en colonne Z de "TXT" alors la valeur de la cellule H de "COR"
est égale à la valeur de la cellule en colonne E de "TXT".

Ma feuille TXT fait environ 40.000 lignes et pour ma feuille COR cela dépend.

J'ai fais plusieurs codes mais à chaque fois j'ai "Excel ne répond pas".

Voici mon code :

Sub corres()

Dim u as long
Dim v as long

u = 2
v = 2

Do While Sheets("COR").Cells(u, 1).Value <> ""

If Sheets("COR").Cells(u, 13).Value = Sheets("TXT").Cells(v, 26).Value Then

Sheets("COR").Cells(u, 8).Value = Sheets("TXT").Cells(v, 5).Value

u = u + 1

Else
v = v + 1

If v = 40000 Then
u = u + 1
v = 2
End If


End If
Loop

end sub



Merci pour votre aide.
A voir également:

2 réponses

Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   339
 
Bonjour
Essayez ceci
Sub Corres()
    Application.ScreenUpdating = False
    Sheets("COR").Select
    Range("H2:H" & [A100000].End(xlUp).Row).FormulaR1C1 = "=IFERROR(INDIRECT(""TXT!E"" & MATCH(RC[5],TXT!C26,0)),"""")"
    Range("H2:H" & [A100000].End(xlUp).Row).Value = Range("H2:H" & [A100000].End(xlUp).Row).Value
End Sub

Cdlt
0
siamens_duj Messages postés 212 Statut Membre 7
 
Bonjour et merci pour votre réponse.

J'ai appliqué votre code, seulement, j'ai ceci dans les cellules de la colonne H de "COR" :

=IFERROR(INDIRECT("TXT!E" & MATCH(RC[5],TXT!C26,0)),"")
0
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   339 > siamens_duj Messages postés 212 Statut Membre
 
Que ce passe t-il quand vous faites dérouler le code en pas à pas?
0
siamens_duj Messages postés 212 Statut Membre 7
 
Rien, à "Application.ScreenUpdating = False" j'ai Li 3 col 1 puis Li 4 col 1 et ainsi de suite
0
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   339
 
Voici un exemple du fichier, effacer la colonne H et cliquez sur le bouton
https://www.cjoint.com/c/FFunWaPrD6w
Si ça ne convient pas, mettez un extrait de votre fichier (sans données confidentielles) sur cjoint.com.
0
siamens_duj Messages postés 212 Statut Membre 7
 
J'ai testé votre fichier et il fonctionne parfaitement, je ne comprends pas pourquoi cela ne fonctionne pas sur mon fichier ... Es ce parce que j'ai une version office 2007 ?

Aussi, devrais-je vous préciser qu'il arrive que des cellule de la colonne E de TXT soit vide ?

Je suis désolé je ne peux vraiment pas vous joindre mon fichier, tout son contenu est confidentiel. Cependant je vous remercie tout de même pour votre aide.
0
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   339
 
J'ai aussi excel 2007,
Même si des cellules de la colonnes E de TXT sont vides, ça fonctionne aussi, faites l'essai en effaçant des cellules de la colonne E.

Je suis désolé je ne peux vraiment pas vous joindre mon fichier, tout son contenu est confidentiel. Même en remplaçant les données confidentielles par des valeurs bidons? Dommage.
Cdlt
0
siamens_duj Messages postés 212 Statut Membre 7
 
Bonjour,

C'est bon j'ai réussi !

Merci beaucoup pour votre aide.
0