Copier donner selon condition

R

René du var

Guest
Bonsoir le forum,

J'aimerai pourvoir automatiser une tâche !

Je joint un fichier pour plus de clartée

Je résume la condition de la formule ou de la macro :

Dans le claseur il y a 5 onglets pricipaux

BX
CP
CF
SG
BDD TEXTE PAYE

La formule ou la macro doit interroger la colonne 'd' de l'onglet BDD TEXTE PAYE, si elle trouve 'bx' alors il faut copier toutes les lignes contenant 'bx' dans l'onglet BX etc......

[file name=test_20051115183548.zip size=27697]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/test_20051115183548.zip[/file]
 

Pièces jointes

  • test_20051115183548.zip
    27 KB · Affichages: 22

andré

XLDnaute Barbatruc
Salut rené,

Un essai en pièce jointe.

La petite liste de validation en A1 te permet de choisir la feuille de copie.

Â+

OUPS !

Vaut mieux écrire René sans é ! [file name=test_Rene.zip size=45724]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/test_Rene.zip[/file]

Message édité par: andré, à: 15/11/2005 19:46
 

Hellboy

XLDnaute Accro
Bonjour René du var

Voici une proposition:

Private Sub CommandButton1_Click()
   
Dim bytCritere        As Byte
   
Dim strCritere        As String
   
    Application.ScreenUpdating =
False
   
For bytCritere = 2 To 5
           
Select Case bytCritere
                           
Case 2:    strCritere = 'BX'
                           
Case 3:    strCritere = 'CF'
                           
Case 4:    strCritere = 'CP'
                           
Case 5:    strCritere = 'SG'
           
End Select
            Cells(1, 4).AutoFilter Field:=1, Criteria1:=strCritere
            Range(Cells(2, 1), Selection.SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Select
           
If Selection.Row > 1 Then
                    Selection.Copy
                   
With Sheets(bytCritere)
                            .Select
                            .Cells(65536, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
                           
True, Transpose:=False
                   
End With
                    Sheets(1).Select
           
End If
   
Next bytCritere
    Cells(1, 4).AutoFilter Field:=1
    Cells(1, 1).Select
    Application.ScreenUpdating =
True
End Sub

[file name=test_20051115195230.zip size=40332]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/test_20051115195230.zip[/file]

Oopss, c'est a mon tour André, désolé ! :eek:

Message édité par: Hellboy, à: 15/11/2005 19:53
 

Pièces jointes

  • test_20051115195230.zip
    39.4 KB · Affichages: 27

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir René, Ândré, Hellboy, bonsoir le forum,

Dur dur de passer derrière les cracks de ce forum. Tant pis, je t'envoie ma proposition quand même... Essaie cette macro :


Sub Macro1()
Dim cel As Range 'déclare la variable Cel
Dim Dest As Range 'déclare la variable Dest

With Sheets('BDD TEXTE PAYE') 'prend en compte l'onglet 'BDD TEXTE PAYE'

'boucle sur toutes les cellule Cel éditées de la colonne D
For Each cel In .Range('D1:D' & .Range('D65536').End(xlUp).Row)

'définit la destination de la copie
'condition si la cellule A1 de l'onglet de destination est vide
If Sheets(cel.Value).Range('A1').Value = '' Then
'définit la variable Dest
Set Dest = Sheets(cel.Value).Range('A1')
'copie la largeur de la colonne
cel.EntireRow.Copy
Dest.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Else 'sinon
'définit la variable Dest
Set Dest = Sheets(cel.Value).Range('A65536').End(xlUp).Offset(1, 0)
End If 'fin de la condition

'copie et colle la ligne dans la destination
cel.EntireRow.Copy Destination:=Dest
Next cel 'prochaine cellule éditée de la colonne D

End With 'fin de la prise en compte de l'onglet 'BDD TEXTE PAYE'
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir le fil, bonsoir le forum,

René je suis mort de rire car tu confonds le dégré d'implication dans le site et le Pseudo de la personne. Ainsi Ândré devient Barbatruc (remarque ça lui va si bien...) et Hellboy devient Accro... Le nom est écrit au dessus Visiteur, au dessus...
 
R

René du var

Guest
Merci Robert

Comme je l'ai dis au dessus il faut pas de filtre et je veux garder la meme structure de fichier et remplis les 4 onglets bx cp cf sg en meme temps



Dest.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
 

Hellboy

XLDnaute Accro
Bonjour René du var

Je te propose la même solution, mais sans que tu t'aperçoive que j'ai utilisé le filtre.


[file name=test_20051116005613.zip size=41608]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/test_20051116005613.zip[/file]
 

Pièces jointes

  • test_20051116005613.zip
    40.6 KB · Affichages: 30

Hellboy

XLDnaute Accro
re René du var

J'essaie cette nouvelle tentative, mais je ne garanti rien car je n'ai pas Excel 97.


[file name=test_20051116104556.zip size=44591]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/test_20051116104556.zip[/file]
 

Pièces jointes

  • test_20051116104556.zip
    43.5 KB · Affichages: 21

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, bonjour le forum,

René, j'ai l'air de vouloir prêcher pour ma paroisse... mais as-tu essayé la solution que je te proposais (sans filtre comme les gitanes maïs). Si c'est l'actualisation de la largeur des colonnes qui te gêne, voici le code modifié :


Sub Macro1()
Dim cel As Range 'déclare la variable Cel
Dim Dest As Range 'déclare la variable Dest

With Sheets('BDD TEXTE PAYE') 'prend en compte l'onglet 'BDD TEXTE PAYE'

'boucle sur toutes les cellule Cel éditées de la colonne D
For Each cel In .Range('D1:D' & .Range('D65536').End(xlUp).Row)

'définit la destination de la copie
'condition si la cellule A1 de l'onglet de destination est vide
If Sheets(cel.Value).Range('A1').Value = '' Then
'définit la variable Dest
Set Dest = Sheets(cel.Value).Range('A1')
Else 'sinon
'définit la variable Dest
Set Dest = Sheets(cel.Value).Range('A65536').End(xlUp).Offset(1, 0)
End If 'fin de la condition

'copie et colle la ligne dans la destination
cel.EntireRow.Copy Destination:=Dest
Next cel 'prochaine cellule éditée de la colonne D

End With 'fin de la prise en compte de l'onglet 'BDD TEXTE PAYE'
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 499
Messages
2 088 999
Membres
104 001
dernier inscrit
dessinbecm