Copier donner selon condition

  • Initiateur de la discussion Initiateur de la discussion René du var
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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é ! 😱

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

Pièces jointes

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😀' & .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
 
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...
 
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
 
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😀' & .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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
1 K
P
Réponses
4
Affichages
1 K
placis
P
D
Réponses
7
Affichages
1 K
D
P
Réponses
10
Affichages
1 K
placis
P
S
Réponses
3
Affichages
2 K
Stella
S
Réponses
5
Affichages
2 K
denis
D
P
Réponses
13
Affichages
2 K
N
Réponses
6
Affichages
1 K
D
Réponses
4
Affichages
1 K
Réponses
10
Affichages
2 K
L
Réponses
4
Affichages
1 K
L
B
Réponses
0
Affichages
863
Benhur
B
L
Réponses
2
Affichages
974
lepalois
L
N
Réponses
3
Affichages
792
E
Réponses
12
Affichages
2 K
EMMANUEL
E
L
Réponses
6
Affichages
15 K
D
  • Question Question
Réponses
2
Affichages
902
darib52
D
Retour