Copier cellule si égalité entre deux feuilles

Bonjour le Forum,

Je me permets de vous écrire car je n'arrive pas à résoudre mon problème malgré ma longue recherche sur internet..

Pour faire simple je souhaiterais transférer via un bouton les données de catégorie (colonne N) de la feuille MAJ sur la feuille GENERAL dans catégorie (colonne AB). Si le Code (colonne D) de la feuille MAJ = le Code (colonne A) de la feuille GENERAL.

Puis en fonction des catégories obtenues dans la feuille GENERAL, il y a des actions d'écriture dans certaines cellules voir fichier ci-joint.

17test-v1.xlsm (20.05 Ko)

Je vous remercie d'avance de l'aide que vous pourriez m'apporter

Bonjour,

Marrant, j'ai comme une impression de déjà vu !

Cordialement.

@MFerrand : t'as cru qu'c'était un d'mes posts, hein ?

Salut Dhany !

J'ai déjà codé il n'y pas longtemps un transfert de données de la même feuille source à la même feuille cible, les données ont légèrement changé, mais la problématique est la même et en plus simple puisqu'il n'y a plus qu'une colonne à transférer...

Bonne journée à toi.

@MFerrand

j'croyais qu'ton « impression de déjà vu » était pour la jolie mise en forme,

bonne journée à toi aussi !

dhany

Bonjour Tomobilus, le forum,

je te retourne ton fichier modifié :

29test-v1.xlsm (22.74 Ko)

* regarde la 1ère feuille "GENERAL" ; j'ai modifié seulement le zoom : 90%

* va sur la 2ème feuille "MAJ" ; clique sur le bouton « Transfert »


Alt F11 pour voir le code VBA, puis revenir sur Excel

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Bonjour le Forum

@MFerrand oui tu ne fabule pas

Je pensais y arriver en modifiant le code initial du bouton "transfert" mais on me propose que des formules

@dhany Merci beaucoup pour ta proposition cela marche nickel !!

Autrement dit ce n'était pas la peine que j'aie pris le temps de fournir des explications détaillées... !

Bonjour Tomobilus,

merci pour ton retour, et pour le !

merci aussi d'avoir passé le sujet en résolu !

bonne continuation !

dhany

Bonjour MFerrand,

tu a écrit :

Autrement dit ce n'était pas la peine que j'aie pris le temps de fournir des explications détaillées... !

comme dit le proverbe supposé chinois : « une image vaut mieux que 1 000 mots »

et comme dit jmd : « un code VBA vaut mieux que n'importe quoi d'autre »

dhany

Re

@MFerrand Tes explications m'ont beaucoup servi, seulement je n'arrivais pas a modifier ton code pour transférer une colonne éloignée des autres via le "array()", je me retrouvais avec pleins d'écriture dans des colonnes vide à cause de la boucle. du coup j'ai pris le problème à l'envers et j'ai crée une action indépendante.

Pardonne moi pour mon ignorance dans le VBA

Encore merci à vous deux pour votre dévouement et l'aide énorme dont vous nous faites bénéficier

@Tomobilus

complément d'info : j'viens d'voir que pour la Catégorie seulement, pas la 2ème partie avec les "XXX", c'était possible de faire plus simplement avec cette formule en feuille "GENERAL", cellule AB2 (à tirer vers le bas) :

=SI(A2="";"";SIERREUR(RECHERCHEV(A2;MAJ!D:N;11;0);""))

mon code VBA pourrait utiliser VLOOKUP(), mais c'est inutile ; reste les "XXX".


@jmd : oui, oui, je sais : VBA est inutile (ou presque)

dhany

Le Array liste des numéros de colonnes du tableau source (en opérant sur une extraction en tableau de la plage source, les numéros de colonne dans ce tableau partent toujours de 1), et on place ces numéro dans l'ordre que l'on souhaite avoir sur la cible.

Cordialement.

@ dhany

Merci pour l'info mais comme tu dis, après il me manquait les XXX

@MFerrand

J'ai bien compris la logique de l'ordre chronologique des colonnes, mais est-ce que ça marche si j'écris :

...array(4, 3, 1, 5, 2, , , , ,8)

@Tomobilus

je te propose ce fichier .xlsx (donc sans VBA) :

4test-v2.xlsx (14.86 Ko)

il contient ma formule précédente, et aussi, à la place des "XXX", une MFC avec cette longue formule :

=ET($A2<>"";$AB2<>"";OU(ET($AB2=1;OU(COLONNE()=8;COLONNE()=11));ET($AB2=2;OU(COLONNE()=9;COLONNE()=14;COLONNE()=16));ET($AB2=3;COLONNE()=13);ET($AB2=4;OU(COLONNE()=19;COLONNE()=20;COLONNE()=21))))

peut-être que la couleur et le contour suffiront comme solution de substitution à tes "XXX" ?


@jmd : oui, j'ai fait un gros effort tout spécialement pour toi ! (j'comprends très bien qu'tu sois légèrement frustré quand y'a des codes VBA incompréhensibles ! mais si ça peut t'consoler : c'est pareil pour moi avec tes TCD ! )

dhany

@dhany

Merci pour ce second fichier, j'aime beaucoup la MFC. Je trouve que c'est plus visuel

Du coup en partant de cette idée, comment pourrais-je faire pour récupérer la couleur de fond de la cellule et l'appliquer dans une TextBox, sachant que j'arrive déjà à récupérer le texte de celle-ci

capture

Soit :

  • etc...

merci pour ton retour ! pour ta nouvelle demande, c'est bien la couleur des cellules que tu veux mettre dans les TextBox du formulaire ? si oui, j'veux bien essayer si tu m'envoies ton fichier avec le formulaire (mais sans données confidentielles).

attention : pour pouvoir récupérer les infos couleur & texte de la bonne ligne du tableau, ton formulaire complet doit contenir le CODE de la colonne A (ou sinon : selon quelle correspondance ? celle du NOM-PRENOM de la colonne B ? autre ? ).

dhany

Re,

Cela ne peut fonctionner ainsi, il te faut introduire un "vide" dans la source pour pouvoir le faire prélever par Index aux emplacements voulus.

Exemple :

Sub test()
    Dim Tablo(), tbl, aa, i%, n%, m%
    With ActiveSheet.Range("A1").CurrentRegion
        m = .Columns.Count + 1
        aa = .Resize(, m).Value
    End With
    tbl = Array(4, 3, 1, 5, 2, m, m, m, m, 8)
    For i = 2 To UBound(aa)
        'If condition à satisfaire
            ReDim Preserve Tablo(n)
            Tablo(n) = WorksheetFunction.Index(aa, i, tbl)
        'End If
    Next i
    With Worksheets("FeuilleCible").Range("A2").Resize(n, UBound(tbl) + 1)
        .Value = WorksheetFunction.Transpose(WorksheetFunction.Transpose(Tablo))
        'autres instructions éventuelles
    End With
End Sub

Tu élargis le tableau source à une colonne vide, tu montes ton tableau colonnes dans une variable (ça facilitera le dimensionnement de la plage cible, et tu l'utilises dans Index), et là ton résultats aura incorporé 4 colonnes vides...

Cordialement.

@dhany

Oui c'est exactement ça, mettre la couleur et le texte dans les TextBox de mon formulaire.

Il y a déjà une recherche de correspondance dans le formulaire

Je m'occupe de créer un fichier sans données confidentielles et je te montre ça

@MFerrand

Merci pour cette explication, je comprend mieux la logique de programmation de cet outil

@dhany

Voici le fichier dis moi s'il y a des choses que tu ne comprend pas

6tomobilusv1.xlsm (56.44 Ko)
Rechercher des sujets similaires à "copier egalite entre deux feuilles"