Copier des résultats de Feuil2 à la bonne place dans Feuil1 ?

beoper

XLDnaute Junior
Bonsoir à tous,

Pardon pour mon titre mais le mieux est de regarder le fichier joint (au 3eme onglet).

J'ai essayé de créer une macro mais hélas je n'ai pas la logique complète. ;(

Merci d'avance ;)
 

Pièces jointes

  • copie.xlsm
    18.5 KB · Affichages: 55
  • copie.xlsm
    18.5 KB · Affichages: 55
  • copie.xlsm
    18.5 KB · Affichages: 59

Dranreb

XLDnaute Barbatruc
Re : Copier des résultats de Feuil2 à la bonne place dans Feuil1 ?

Bonsoir.
Comme ça peut être:
VB:
Sub aaa_test()
Dim DerLigF1 As Long, DerLigF2 As Long
DerLigF1 = Feuil1.[A:Z].Find("*", LookIn:=xlValues, _
        SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
DerLigF2 = Feuil2.[A:Z].Find("*", LookIn:=xlValues, _
        SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
With Feuil2.[BE2].Resize(DerLigF2 - 1)
   .FormulaR1C1 = "=MATCH(RC1,Feuil1!R2C1:R" & DerLigF1 & "C1,0)"
   .SpecialCells(xlCellTypeFormulas, 1).EntireRow.Copy Feuil1.[A2]
   .ClearContents
   End With
Feuil1.[BE:BE].ClearContents
End Sub
 

Regueiro

XLDnaute Impliqué
Re : Copier des résultats de Feuil2 à la bonne place dans Feuil1 ?

Bonsoir Le Forum, beoper, DANREB
Une variante par formule
En BB2
Code:
=SIERREUR(INDEX(Tableau2[#Données];EQUIV($A2;Tableau2[fruits_plus];0);EQUIV(BB$1;Tableau2[#En-têtes]));"")
Formule à recopier vers le bas et à droite

Sur la feuille 2, insérer un tableau2
 

Pièces jointes

  • XLD_INDEX_TABLEAU_EQUIV.xlsm
    20.4 KB · Affichages: 35

beoper

XLDnaute Junior
Re : Copier des résultats de Feuil2 à la bonne place dans Feuil1 ?

Bonjour "Dranreb" et "Regueiro",

Tout d'abord merci pour votre aide. ;)

Toutefois, après tests :
- la solution de "Dranreb" ne fonctionne pas bien car elle me mélange les données (cf ordre des cellules de la colonne A dans feuil1).

- Pour la solution de "Regueiro": çà fonctionne !;) Toutefois si je comprends bien je suis obliger de supprimer les colonnes vides de la feuille 2 ?

J'ai essayé d'adapter les formules en "Supprimant le tableau2 sans perdre sa mise en forme ni le format des données" Créer ou supprimer un tableau Excel dans une feuille de calcul - Excel - Office.com

Du coup j'obtiens dans la cellule BB2 de feuil1
=SIERREUR(INDEX(Feuil2!$A$2:$BD$1048576;EQUIV($A2;Feuil2!$A$2:$A$1048576;0);EQUIV(BB$1;Feuil2!$A$1:$BD$1));"")

çà a l'air de marcher, mais quand je fais la même chose dans mon vrai classeur, la première colonne fonctionne, mais certaines des suivantes non ! ;(
Je pensais avoir trouvé une solution lorsque j'ai vu que j'avais un nom d'onglet qui était le même que celui d'un nom d'entête. J'ai fais les modif mais çà n'a pas l'air de vouloir fonctionner !
J'ai des noms d'entêtes avec des minuscules + majuscules + des "_" (nb:certains noms peuvent avoir le même début).

J'ai aussi essayé d'ajouter un 0 dans cette formule :
=SIERREUR(INDEX(Feuil2!$A$2:$BD$1048576;EQUIV($A2;Feuil2!$A$2:$A$1048576;0);EQUIV(BB$1;Feuil2!$A$1:$BD$1;0));"")

D'autres idées ?

Merci d'avance ;)
 

beoper

XLDnaute Junior
Re : Copier des résultats de Feuil2 à la bonne place dans Feuil1 ?

Re,

J'ai essayé une autre méthode mais elle ne me copie pas les valeurs de la colonne BB ! ;(

Code:
Sub test03()

For i = 2 To Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Row
  
For j = 2 To Sheets("Feuil2").Cells(Rows.Count, "A").End(xlUp).Row
  
    If Sheets("Feuil1").Range("A" & i).Value = Sheets("Feuil2").Range("A" & j).Value Then
    Sheets("Feuil2").Range("BB" & j & ":BD" & j).Copy Sheets("Feuil1").Range("BB" & i & ":BD" & i)
 
    End If
  
Next j
Next i
End Sub

Merci d'avance ;)
 

beoper

XLDnaute Junior
Re : Copier des résultats de Feuil2 à la bonne place dans Feuil1 ?

Re,
La nuit portant conseil ;) j'ai juste décallé le début de BB à BA et çà a l'air de marcher ! ;)

Code:
Sub test04()

For i = 2 To Sheets("Feuil1").Cells(Rows.Count, "A").End(xlUp).Row
 
For j = 2 To Sheets("Feuil2").Cells(Rows.Count, "A").End(xlUp).Row
 
    If Sheets("Feuil1").Range("A" & i).Value = Sheets("Feuil2").Range("A" & j).Value Then
    Sheets("Feuil2").Range("BA" & j & ":BD" & j).Copy Sheets("Feuil1").Range("BA" & i & ":BD" & i)
 
    End If
 
Next j
Next i
End Sub

Il ne me reste plus qu'à tester sur beaucoup plus de colonnes et lignes. ;)
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib