recopie compliquée tableau avec conditions

francois31170

XLDnaute Nouveau
Bonjour

Merci par avance pour votre aide j’espere.

Je ne suis pas un expert Macro, j’essaie de les construire ou plutôt adapté grâce mes recherches sur cet excellent site, mais là je n’avance pas beaucoup.

Voici mon problème : Je dois réaliser ou actualiser chaque semaine des tableaux excel pour suivre l’activité commerciale et le suivi des facturations.


Mon travail :
- Je dois donc chaque semaine fusionner sur un tableau de reporting « Source » chaque reporting « conseiller » (j‘ai trouvé la macro pour faire cela)
- Extraire de ce tableau certaines données nouvelles et les intégrer dans un autre tableau que je complète manuellement également avec d’autres champs (etat facturation, etc…)

Ce que je dois automatiser:
- Sur mon tableau « Source », je dois identifier les lignes :
o Où la cellule de la colonne « REF » n’est pas vide
o Où la cellule de la colonne « REF » n’est pas déjà présente dans la colonne « REF » du tableau de destination « Tab». (pour éviter de recopier des doublons)
- Puis, si les 2 conditions sont remplies, copier que quelques données de cette ligne : Pas toutes les colonnes mais que certaines colonnes bien identifiées (colonne A, B, D, F par exemple)
- Puis Coller le tout dans mon onglet « Tab» à la suite de la dernière ligne remplie et dans les colonnes identiques (A, B, D, F) mais pouvant être placé dans un ordre différent (ou avec d’autres colonnes entre les 2.) Les titres des colonnes sont bien sur identiques.

La « difficulté » est que j’ai 2 conditions (cellule non vide et non doublon avec autre tableau) et une recopie partielle de quelques données du tableau.

Ci-joint un fichier excel exemple avec :
- Un onglet « Source »
- Un onglet ‘Tab avant’ avant intégration nouvelles des données
- Un onglet «’Tab apres » après intégration des données pour comprendre le résultat espéré.

Dans la pratique bien sur il n’existe qu’un fichier « source » et qu’un fichier « Tab»

En vous remerciant par avance si vous pouvez m’aider, je croise les doigts.


Francois
 

Pièces jointes

  • reportingexcel.xlsm
    16.6 KB · Affichages: 84

francois31170

XLDnaute Nouveau
Re : recopie compliquée tableau avec conditions

Rebonjour

Apres plusieurs heures de recherche, j'en suis arrivé au code ci dessous.
Qui bien sur ne fonctionne pas.
Si vous pouviez m'aider s'il vous plait ?
Je suis nul en VBA, je fais ce que je peux...

Sub Macro1()
Dim o As Worksheet 'déclare la variable o (Onglet)
Dim z As Worksheet 'déclare la variable z (Onglet)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (DESTination
For Each cel In o.Range("A2:A" & o.Range("E65536").End(xlUp).Row)
If cel.Value <> z.Range("A1") Then '
Set dest = z.Range("A65536").End(xlUp).Offset(1, 0)
o.Range(o.Cells(cel.Row, 1), o.Cells(cel.Row, 2), o.Cells(cel.Row, 3), o.Cells(cel.Row, 4), o.Cells(cel.Row, 5), o.Cells(cel.Row, 8), o.Cells(cel.Row, 9)).Copy dest
End If
End Sub

En vous remerciant

Francois31170
 

Pierrot93

XLDnaute Barbatruc
Re : recopie compliquée tableau avec conditions

Bonjour François,

Pas testé, mais à priori il manque un "next" après le "end if" :
Code:
o.Range(o.Cells(cel.Row, 1), o.Cells(cel.Row, 2), o.Cells(cel.Row, 3), o.Cells(cel.Row, 4), o.Cells(cel.Row, 5), o.Cells(cel.Row, 8), o.Cells(cel.Row, 9)).Copy dest
End If
[COLOR="Red"]Next cel[/COLOR]
End Sub

bonne journée
@+
 

francois31170

XLDnaute Nouveau
Re : recopie compliquée tableau avec conditions

Excuse moi Pierrot du manque de précision :eek:
Le message d'erreur est :
"Erreur de compilation
Nombre d'arguments incorrect ou affectation de propriété incorrecte."
J'ai enregistré le fichier en format excel 2003, voir ci joint, en espérant que tu puisses le regarder.
En te remerciant.
Francois
 

Pièces jointes

  • reportingexcel3.xls
    37.5 KB · Affichages: 92

Pierrot93

XLDnaute Barbatruc
Re : recopie compliquée tableau avec conditions

Re,

as tu vu mon post de 11h14... sinon regarde le code ci-dessous, nom des feuilles à adapter...

Code:
Sub macro1()
Dim o As Worksheet 'déclare la variable o (Onglet)
Dim z As Worksheet 'déclare la variable z (Onglet)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (DESTination
Set o = Worksheets("Feuil1")
Set z = Worksheets("Feuil2")
For Each cel In o.Range("A2:A" & o.Range("E65536").End(xlUp).Row)
    If cel.Value <> z.Range("A1") Then
        Set dest = z.Range("A65536").End(xlUp).Offset(1, 0)
        o.Range(o.Cells(cel.Row, 1).Resize(, 5).Address & "," _
            & o.Cells(cel.Row, 8).Resize(, 2).Address).Copy dest
    End If
Next cel
End Sub
 

francois31170

XLDnaute Nouveau
Re : recopie compliquée tableau avec conditions

OK je comprends..
REF est le titre de la colonne.
Le but est d'éviter les doublons dans mes recopies puisqu'en suite je rajoute de nouvelles informations sur des nouvelles colonnes.
En gros, par exemple,
si valeur de A2 pas présent dans feuille 2 colonne A de cellule A 2 à A 65536, alors on copie à la suite de la dernière ligne remplie dans Feuil2
si A3 pas présent dans feuille 2 colonne A de cellule A 2 à A 655366, alors on copie à la suite de la dernière ligne remplie dans Feuil2
etc..

J'essaie ca comme syntaxe mais ca ne veut pas :

If cel.Value <> cel In z.Range ("A1:A" & o.Range("E65536").End(xlUp).Row) Then
 

francois31170

XLDnaute Nouveau
Re : recopie compliquée tableau avec conditions

Je suis dessus depuis ton post de 13.15 et je ne trouve rien dont je pourrais m'inspirer.
Je suis nul en VBA, tout ce que je peux faire c'est trouver des bouts de code qui ressemble à ce que je veux et les recopier.

J'ai trouvé ca in fine sur le tres bon site de boisgontier :

Sub essai()

For Each cel In [champ]
Set c = [champ].Find(what:=cel, LookAt:=xlPart)
If Not c Is Nothing Then
premier = c.Address
.... (commande de couleur dont on se fiche)
End If
Set c = Range("champ").FindNext(c)
Loop While Not c Is Nothing And c.Address <> premier
End If
Next cel
End Sub

Mais je ne sais comment l'adapter et l'intégrer dans ma macro. :(
 

Pierrot93

XLDnaute Barbatruc
Re : recopie compliquée tableau avec conditions

Re,

peut être comme ceci, la recherche s'effectue sur la colonne A de la feuille "z", nom des feuilles à adapter :
Code:
Sub macro1()
Dim o As Worksheet 'déclare la variable o (Onglet)
Dim z As Worksheet 'déclare la variable z (Onglet)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (DESTination
Dim x As Range 'cellule recherchée
Set o = Worksheets("Feuil1")
Set z = Worksheets("Feuil2")
For Each cel In o.Range("A2:A" & o.Range("E65536").End(xlUp).Row)
    Set x = z.Range("A2:A" & z.Range("A65536").End(xlUp).Row).Find(cel.Value, , xlValues, xlWhole, , , False)
    If Not x Is Nothing Then
        If cel.Value <> z.Range("A1") Then
            Set dest = z.Range("A65536").End(xlUp).Offset(1, 0)
            o.Range(o.Cells(cel.Row, 1).Resize(, 5).Address & "," _
                & o.Cells(cel.Row, 8).Resize(, 2).Address).Copy dest
        End If
    End If
Next cel
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 153
Messages
2 085 800
Membres
102 980
dernier inscrit
brossadan