EXCEL Vba:SYNCRO DE DONNEES ENTRE 2 FEUILLES

Résolu/Fermé
7808622H Messages postés 292 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 19 mai 2018 - 18 mai 2009 à 21:39
7808622H Messages postés 292 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 19 mai 2018 - 19 mai 2009 à 01:05
Bonjour à tous les pro du VBA,

J'ai besoin d'un petit ( euh non d'un énorme) coup de main en VBA que je maitrise que trop peu

Je m'expliquer , mon classeur excel est composé de 2 feuilles

-la feuille A : récupere les données par un simple collé depuis une requette générée par un ERP, une fois recoller sur la feuille A, la mise en forme "ideale" se fait par le biais d'un bouton qui supprime les colonnes superflues

- La Feuille B : contient le fichier actualisé, c'est a dire, les anciennes lignes qui ont toujours cour du fait d'attente d'information par exemple et éventuellement d'autres pas encore traitées mais qui sont persistantes

Le but recherché, est que lors de l'activation du bouton actualiser de la feuille B, Excel compare les feuilles A et B

Il devra vérifier par rapport à la colonne "PIECE" (cf docjoint) des deux feuilles,tout les numeros de pièces et coller à la suite des lignes déja présentes sur la feuille B, les lignes de pièces inexistantes.

c'est cette partie que je ne trouve pas, ( me doute bien que c'est pas une mince affaire c'est bien poru ca que je tente de me tourner vers vous)

Les mises en formes sont déjà faite en code sur les deux boutons, il faudrait juste que l'action de la "synchronisation" se fasse avant les mises en forme sur le bouton de la feuille B

Bon je pense qu' avec le classeur pour visualiser ca sera un peu plus clair.

J'espère vraiment que quelqu'un pourra me débrouiller ce sac de noeux car j'ai eu bo chercher mon bonheur sur le net, bah je sèche

Liens vers le fichier DEMO : http://cgpccf.free.fr/ER14.xls
Le fichier présenté est tel qu'il est lorsque la premiere feuilel vient d etre collée ( feuille import....) il faut cliquer sur MISE EN FORME avant de poursuivre.

Un énorme merci par avance

CED
A voir également:

2 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
18 mai 2009 à 22:42
Bonsoir,

A mettre dans la feuille import...
Sub importer()
    Dim i As Long, nPiece As Long, r, Npiec As String, dest As String
    For i = 3 To [A65536].End(xlUp).Row
        'nPiece = CLng(Cells(i, 1))
        Npiec = Cells(i, 1)
        Set r = Worksheets("ER14_FINAL").Range("A:A").Find(Npiec, LookIn:=xlValues, LookAt:=xlWhole)
        If Not (IsNumeric(r)) Then
            dest = "A" & Worksheets("ER14_FINAL").[A65536].End(xlUp).Offset(1, 0).Row
            Range("A" & i).Resize(1, 9).Copy Destination:=Worksheets("ER14_FINAL").Range(dest)
        End If
    Next i
    Set r = Nothing
End Sub

Il faut faire un choix entre entier ou string pour le n° de pièce car ça change dans ta 2nde feuille.
J'avais démarré avec un long 'nPiece = CLng(Cells(i, 1)) que j'ai mis ensuite en commentaire pour utiliser un string Npiec = Cells(i, 1)
Si tu reviens sur un long ne pas oublier de changer la variable en Npiece au lieu de Npiec dans le .find

Regarde si c'est ok

eric
1
7808622H Messages postés 292 Date d'inscription samedi 23 février 2008 Statut Membre Dernière intervention 19 mai 2018 4
19 mai 2009 à 01:05
nickel chrome ca marche tout comme il faut, j'ai fait les titesm odifs qu'il y aavit a faire et ca marche

Un énorme merci a toi
0