EXCEL Vba:SYNCRO DE DONNEES ENTRE 2 FEUILLES

Résolu/Fermé
Signaler
Messages postés
292
Date d'inscription
samedi 23 février 2008
Statut
Membre
Dernière intervention
19 mai 2018
-
Messages postés
292
Date d'inscription
samedi 23 février 2008
Statut
Membre
Dernière intervention
19 mai 2018
-
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

2 réponses

Messages postés
24222
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
29 novembre 2021
6 975
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
292
Date d'inscription
samedi 23 février 2008
Statut
Membre
Dernière intervention
19 mai 2018
3
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