Copier le contenu d'une plage (colonne) en utilisant la fonction "find"

Le
denys59.p
Bonjour à tous,

Sur la feuille 1, j'ai une quantité X de colonnes dont les donnée=
s commencent à la ligne 5 et dont les titres ressemblent à ceci:

01 Adding Items to another colleague's workflow on Dashboard 02 Report Only=
(per Client) 03 Lien Searches 04 New EOI (Set-up) Complex 05 New EOI (Set-=
Up) Simple

Je dois transférer le contenu des colonnes de la feuille 1 aux colonne=
s correspondantes dans la feuille 2. Ce qui est important, c'est de transf=
érer le contenu de la colonne 01 avec la colonne 01 de la feuille 2. C=
omme il est possible que ce qui est écrit après le 01 ne soit pas=
exactement pareil dans les deux feuilles, ma recherche doit porter sur les=
deux premiers chiffres sans égard au reste du titre.

Il y a plus de soixante colonnes dans le feuille 1 et plus de 80 dans la se=
conde, 01 xxx 02 xxx 03 xxx etc jusqu'à 83 (ça change à chaq=
ue mois)

Alors comment faire pour copier le contenu de chaque colonne de la feuille =
1 vers la colonne correspondante dans la feuille 2 ?

Votre aide serait grandement appréciée

Merci

Denys
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26451096
Bonjour,
Est-ce que tu peux avoir des doublons en Feuil1 dans la même colonne ? Des doublons en Feuil2
dans la même colonne ?
Lorsque tu copies les données d'une colonne dans la feuil1, tu veux ajouter la donnée dans la
même colonne de la feuil2 à la dernière ligne disponible ? ou ailleurs?
Les données débutent en ligne 5 dans les 2 feuilles ? De la colonne A5 ?
Tu compares les données de la colonne A de la feuil1 avec les données de la colonne A en Feuil2
? Et ceci est vrai pour les autres colonnes?
Est-ce que la feuil2 a toujours plus de colonnes ou l'inverse peut-être vrai? Si elle a des
colonnes en plus, il n'y a aucun traitement à effectuer sur ces colonnes?
Est-ce que le contenu des 2 premiers caractères de chaque cellule est toujours des chiffres, et
ce dans les 2 feuilles?
MichD

a écrit dans le message de groupe de discussion :

Bonjour à tous,
Sur la feuille 1, j'ai une quantité X de colonnes dont les données commencent à la ligne 5 et
dont les titres ressemblent à ceci:
01 Adding Items to another colleague's workflow on Dashboard 02 Report Only (per Client) 03
Lien Searches 04 New EOI (Set-up) Complex 05 New EOI (Set-Up) Simple
Je dois transférer le contenu des colonnes de la feuille 1 aux colonnes correspondantes dans la
feuille 2. Ce qui est important, c'est de transférer le contenu de la colonne 01 avec la
colonne 01 de la feuille 2. Comme il est possible que ce qui est écrit après le 01 ne soit pas
exactement pareil dans les deux feuilles, ma recherche doit porter sur les deux premiers
chiffres sans égard au reste du titre.
Il y a plus de soixante colonnes dans le feuille 1 et plus de 80 dans la seconde, 01 xxx 02 xxx
03 xxx etc jusqu'à 83 (ça change à chaque mois)
Alors comment faire pour copier le contenu de chaque colonne de la feuille 1 vers la colonne
correspondante dans la feuille 2 ?
Votre aide serait grandement appréciée
Merci
Denys
denys59.p
Le #26451115
Bonjour Denis,
Non, il n'y a pas de doublons possibles. Les données seront toujours s ur la ligne 5... sur les deux feuilles toujours à partir de la colonne F.
Après vérification, le contenu de la cellule sur la ligne 5 est t oujours le même dans les deux feuilles.
Alors, pour simplifier le processus, je dois copier la plage F5:F100 de la feuille 1, trouver le contenu de la cellule F5 sur la plage F5:CJ5 de la fe uille 2 et coller le contenu. De même pour G5, H5, etc...Je refais le processus, jusqu'à ce qu'il y ait une cellule vide sur la ligne 5 de l a feuille 1.
Il y a environ entre 50 et 60 cellules de 01 à 99 possibles sur la feu ille 1, et toutes les cellules 01 à 99 sont présentes sur la lign e 5 de la feuille 2. Il y aura donc des colonnes de vide (ou juste avec le titre dans la cellule 5) dans la feuille 2.
Merci beaucoup
MichD
Le #26451192
Bonjour,
En supposant que j'ai compris...
Essaie comme ceci en copiant la procédure dans un module standard.
Il ne doit pas y avoir de cellules vides dans la ligne 5
'--------------------------------------------------
Sub test()
Dim Rg As Range, C As Range, Cell As Range
Dim Rg2 As Range, T(), A As Long, X As Long
Dim Colonne As Long, Ligne As Long
On Error Resume Next
'Détermine la plage de F5 à Fx des données en Feuil1
With Feuil1 'Worksheets("feuil1")
Colonne = .Cells(5, .Columns.Count).End(xlToLeft).Column
Set Rg = .Range("F5", .Cells(5, Colonne).Address)
End With
'Détermine la plage de F5 à Fx des données en Feuil2
With Feuil2
Set Rg2 = .Range("F5:" & .Cells(5, .Columns.Count).End(xlToLeft).Address)
End With
'On place dans le Tableau (array) T, la valeur des 2 premiers caractères
'de chaque cellule de la ligne 5
For Each C In Rg2
X = X + 1
ReDim Preserve T(1 To X)
T(X) = CLng(Left(C.Text, 2))
Next
'Identifier la bonne colonne de la Feuil2 qui correspond au 2
'premiers caractères en utilisant le tableau (t)
For Each Cell In Rg
'5 + la colonne F c'est la sizième colonne
X = Application.Match(CLng(Left(Cell, 2)), T, 0) + 5
With Feuil1
Ligne = .Cells(.Rows.Count, Cell.Column).End(xlUp).Row
Colonne = Cell.Column
.Cells(5, Cell.Column).Resize(Ligne - 4).Copy Feuil2.Cells(5, X)
End With
Next
End Sub
'--------------------------------------------------
MichD
a écrit dans le message de groupe de discussion :

Bonjour Denis,
Non, il n'y a pas de doublons possibles. Les données seront toujours sur la ligne 5... sur les
deux feuilles toujours à partir de la colonne F.
Après vérification, le contenu de la cellule sur la ligne 5 est toujours le même dans les deux
feuilles.
Alors, pour simplifier le processus, je dois copier la plage F5:F100 de la feuille 1, trouver
le contenu de la cellule F5 sur la plage F5:CJ5 de la feuille 2 et coller le contenu. De même
pour G5, H5, etc...Je refais le processus, jusqu'à ce qu'il y ait une cellule vide sur la ligne
5 de la feuille 1.
Il y a environ entre 50 et 60 cellules de 01 à 99 possibles sur la feuille 1, et toutes les
cellules 01 à 99 sont présentes sur la ligne 5 de la feuille 2. Il y aura donc des colonnes de
vide (ou juste avec le titre dans la cellule 5) dans la feuille 2.
Merci beaucoup
denys59.p
Le #26451199
Bonjour Denis,
Merci infiniment, ça fonctionne très bien.
Si je voulais que ce soit le contenu entier de chaque cellule en ligne 5 pl utôt que seulement les deux premiers caractères, comment devrais- je m'y prendre?
Désolé, c'est ce que j'aurais dû demander en premier....
De toutes façons, merci encore, je vais sauver un temps fou !!!
Bonne journée
Denys
MichD
Le #26451208
Comme ceci :
'-----------------------------------------------
Sub test()
Dim Rg As Range, C As Range, Cell As Range
Dim Rg2 As Range, T(), X As Long
Dim Colonne As Long, Ligne As Long
On Error Resume Next
Application.ScreenUpdating = False
Application.EnableEvents = False
'Détermine la plage de F5 à Fx des données en Feuil1
With Feuil1 'Worksheets("feuil1")
Colonne = .Cells(5, .Columns.Count).End(xlToLeft).Column
Set Rg = .Range("F5", .Cells(5, Colonne).Address)
End With
'Détermine la plage de F5 à Fx des données en Feuil2
With Feuil2
Set Rg2 = .Range("F5:" & .Cells(5, .Columns.Count).End(xlToLeft).Address)
T = Rg2.Value
End With
'Identifier la bonne colonne de la Feuil2 qui correspond au 2
'premiers caractères en utilisant le tableau (t)
For Each Cell In Rg
'5 + la colonne F c'est la sizième colonne
X = Application.Match(Cell, T, 0) + 5
With Feuil1
Ligne = .Cells(.Rows.Count, Cell.Column).End(xlUp).Row
Colonne = Cell.Column
.Cells(5, Cell.Column).Resize(Ligne - 4).Copy Feuil2.Cells(5, X)
End With
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'-----------------------------------------------
MichD
denys59.p
Le #26451213
Merci beaucoup Denis
Tu me sauves la vie :-) encore une fois !!!
Bonne journée
Denys
denys59.p
Le #26451305
Bonjour Denis
Tout fonctionne impeccable.....
Merci infiniment et bonne journée
Denys
Publicité
Poster une réponse
Anonyme