Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/10/2011, 15h37   #1
Invité de passage
 
Homme Francois Poulin
Inscription : octobre 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : Homme Francois Poulin
Localisation : Canada

Informations forums :
Inscription : octobre 2011
Messages : 12
Points : 0
Points : 0
Par défaut tri et déplacements vers onglets

Bonjour à tous,

Je cherche a faire en sorte que mon tableau qui à 4 colonnes de large par un nombres x de lignes puisse être trier( facile à faire) mais ensuite que pour chaque ligne on compare le contenu de la cellule [A] avec le nom d'un onglet et lorsque semblable de déplacer toutes les informations de cette ligne dans cet onglet.

Il lorsqu'il rajoute la ligne dans l'onglet approprié, il faudrait aussi qu'il ne le mette pas automatiquement sur la 1ere ligne car cela effacerait les autres informations, alors j'ai penser qu'il pourrait mettre une ligne vide au dessus à chaque fois qu'il déplace.

Je pourrait vous fournir un exemple de ficher si cela pourrait vous aider a visualiser ce que je veux dire.

Donc j'attend vos suggestions pour me diriger dans le bon sens.

Merci d'avance et bonne journée
Fichiers attachés
Type de fichier : xls test taches vers outlook vnet.xls (68,5 Ko, 7 affichages)
frank1365 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 27/10/2011, 20h53   #2
Membre Expert
 
Homme Hervé Silve
Inscription : août 2010
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme Hervé Silve
Localisation : France

Informations forums :
Inscription : août 2010
Messages : 773
Points : 2 093
Points : 2 093
Bonsoir,

Teste ce qui suit pour voir si ça convient. Fais le test sur une copie de ton classeur :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
 
Sub RechercheNom()
 
    Dim Fe As Worksheet
    Dim Plage As Range
    Dim Cel As Range
    Dim Adr As String
    Dim Tbl() As Integer
    Dim I As Integer
 
    'défini la plage de recherche en feuille "Entrée données" et colonne A
    With Worksheets("Entrée données")
 
        Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 2).End(xlUp))
 
    End With
 
    'parcour la collection de feuilles
    For Each Fe In Worksheets
 
        'évite la feuille "Entrée données"
        If Fe.Name <> "Entrée données" Then
 
            'recherche le nom de la feuille en cours dans la plage
            Set Cel = Plage.Find(Fe.Name, , xlValues, xlWhole)
 
            'si trouvé
            If Not Cel Is Nothing Then
 
                'mémorise la première cellule
                Adr = Cel.Address
 
                'et boucle sur les autres
                Do
 
                    'stocke les numéros de ligne
                    I = I + 1
                    ReDim Preserve Tbl(1 To I)
                    Tbl(I) = Cel.Row
 
                    'colle la ligne entière dans la feuille en cours à la première cellule vide
                    With Fe
 
                        Cel.EntireRow.Copy .Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
 
                    End With
 
                    'recherche la suivante
                    Set Cel = Plage.FindNext(Cel)
 
                'boucle tant qu'on est pas revenu à la première occurence
                Loop While Adr <> Cel.Address
 
                'vire les validations de données qui sont copiées avec le reste
                Fe.UsedRange.Validation.Delete
 
            End If
 
        End If
 
    Next Fe
 
    'effectue le tri décroissant du tableau
    Tri Tbl()
 
    'supprime les lignes de la feuille "Entrée données" (à voir si nécessaire ?)
    For I = 1 To UBound(Tbl)
 
        Worksheets("Entrée données").Rows(Tbl(I)).EntireRow.Delete
 
    Next I
 
End Sub
 
Sub Tri(ByRef Tbl() As Integer)
 
    Dim Tempo
    Dim I As Integer
    Dim J As Integer
 
            'éffectue un tri décroissant "<"
            'pour un tri croissant ">"
    For I = 1 To UBound(Tbl) - 1
 
        For J = I + 1 To UBound(Tbl)
 
            If Tbl(I) < Tbl(J) Then
 
                Tempo = Tbl(J)
                Tbl(J) = Tbl(I)
                Tbl(I) = Tempo
 
            End If
 
        Next J
 
    Next I
 
End Sub
Hervé.
Theze est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/10/2011, 00h10   #3
Invité de passage
 
Homme Francois Poulin
Inscription : octobre 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : Homme Francois Poulin
Localisation : Canada

Informations forums :
Inscription : octobre 2011
Messages : 12
Points : 0
Points : 0
Par défaut WOW

un gros merci!!
j'avais une partie de cette logique en tête mais je ne savais pas comment la verbaliser en VBA.

encore un gros merci
frank1365 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/10/2011, 00h13   #4
Invité de passage
 
Homme Francois Poulin
Inscription : octobre 2011
Messages : 12
Détails du profil
Informations personnelles :
Nom : Homme Francois Poulin
Localisation : Canada

Informations forums :
Inscription : octobre 2011
Messages : 12
Points : 0
Points : 0
deux petites questions,

que puis-je rajouter pour que ma cellule A garde sa liste déroulante ainsi que ma "formule" dans la cellule D et que deuxièmement mon bouton macro reste visible?

peut etre je pourrais les vérouiller??
frank1365 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h45.


 
 
 
 
Partenaires

Hébergement Web