IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

tri d'un tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Par défaut tri d'un tableau
    bonjour, je dois réaliser comme projet de créer une macro dans la feuille2 qui vient chercher les valeurs de ma feuil1, l'opérateur peut aller chercher les commandes selon la semaine et l'année selon le mois et l'année ou juste selon l'année. Je debut dans vba j'ai créer une fonction mais celle ce ne fonctionne pas. voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Sub temps_semaines()
    Dim i As Integer
    Dim j As Integer
    Dim lastRow As Long
     
    Feuil2.Range("B9:Q1000").Select
    Selection.ClearContents
    lastRow = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
    j = 9
    Feuil1.Select
    For i = 9 To lastRow
    If Feuil1.Range("A" & i).Value = Feuil2.Range("A4") Then
    Feuil1.Select
        Feuil1.Range("B" & i & ":" & "P" & i).Select
        Selection.Copy
        Feuil2.Select
       Feuil2.Range("A" & j).Select
        ActiveSheet.Paste
        j = j + 1
    End If
    Next i
    End Sub
     
    Sub temps()
    Dim i As Integer            'i est une variable'
    Dim j As Integer            'j est une variable'
     
    Dim lastRow As Long         'lastRow est une variable'
    Feuil2.Range("A9:Q500").Select                                      'je selection mon tableau feuil2 de B9 à Q500'
    Selection.ClearContents                                             ' je l'efface'
    lastRow = Feuil1.Range("A" & "B" & "C" & Rows.Count).End(xlUp).Row           'j'affectue ma variable a la colonne A de mon tableau feuille pour qu'il remonte les lignes depuis le bas'
     
    j = 9     'mon tabeau feuil2 commence a la ligne 9'
        For i = 4 To lastRow
     
            If Feuil2.Range("A4") = Feuil1.Range("A" & i) And Feuil2.Range("D4") = Feuil1.Range("C" & i) And Feuil2.Range("D2") = 0 Then    'si les valeurs de A4 et D4 corresponde au valeur de mon tableau et que D2=0 alors'
                     Feuil1.Select  'select feuil1'
                     Feuil1.Range("D" & i & ":" & "R" & i).Select
                     Selection.Copy
                     Feuil2.Select                                               'semaine/année'
                     Feuil2.Range("A" & j).Select
                     ActiveSheet.Paste
                     j = j + 1
              End If
        Next i
     
        GoTo fin:
     
     
     For i = 4 To lastRow
     
    If Feuil2.Range("D2") = Feuil1.Range("B:B" & i) And Feuil2.Range("D4") = Feuil1.Range("C:C" & i) And Feuil2.Range("A4") = 0 Then
    Feuil1.Select
     
        Feuil1.Range("B" & i & ":" & "P" & i).Select
        Selection.Copy                                                  'mois/année'
        Feuil2.Select
        Feuil2.Range("A" & j).Select
        ActiveSheet.Paste
        j = j + 1
     
     
        End If
         Next i
     
        GoTo fin
    For i = 4 To lastRow
    If Feuil2.Range("D4") = Feuil1.Range("C" & i) And Feuil2.Range("A4") = 0 And Feuil2.Range("D2") = 0 Then
    Feuil1.Select
     
        Feuil1.Range("B" & i & ":" & "P" & i).Select
        Selection.Copy                                                       'année'
        Feuil2.Select
       Feuil2.Range("A" & j).Select
        ActiveSheet.Paste
        j = j + 1
     
     
     
    End If
     Next i
    fin:
    End Sub

  2. #2
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2014
    Messages : 2
    Par défaut
    désolé c'est la fonction temps qui ne fonctionne pas et non temps semaine

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Janvier 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Janvier 2014
    Messages : 41
    Par défaut
    Hello,

    Je suis débutant également et tu voudras peut-être attendre les avis d'experts!

    Celà dit l'instruction m'intrigue car je ne crois pas qu'elle soit soumise à une condition. Ce qui veut dire que dès la fin de ta boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    For i = 4 To lastRow
     
    If Feuil2.Range("A4") = Feuil1.Range("A" & i) And Feuil2.Range("D4") = Feuil1.Range("C" & i) And Feuil2.Range("D2") = 0 Then 'si les valeurs de A4 et D4 corresponde au valeur de mon tableau et que D2=0 alors'
    Feuil1.Select 'select feuil1'
    Feuil1.Range("D" & i & ":" & "R" & i).Select
    Selection.Copy
    Feuil2.Select 'semaine/année'
    Feuil2.Range("A" & j).Select
    ActiveSheet.Paste
    j = j + 1
    End If
    Next i
    tu vas aller directement à la ligne fin.
    Quel est le message d'erreur lorsque tu débuggues?


    Sinon, tu risques de pas de faire de copains ici avec tous les .Select que tu utilises
    Par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Range("A1").Select
    Selection.Copy
    Range("A2").Select
    Activesheet.Paste
    peut avantageusement être remplacé par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A2")=Range("A1")

    Bon courage,
    YanBos

Discussions similaires

  1. Tri d'un tableau en 2D
    Par sniperseb dans le forum C
    Réponses: 4
    Dernier message: 05/01/2006, 16h33
  2. Réponses: 6
    Dernier message: 16/09/2005, 10h30
  3. tri d'un tableau à 2 dimensions
    Par dede92 dans le forum C
    Réponses: 4
    Dernier message: 19/02/2005, 18h29
  4. [langage] Probleme de tri d'un tableau de tableau
    Par Ludo167 dans le forum Langage
    Réponses: 1
    Dernier message: 25/08/2004, 10h32
  5. [] Tri d'un tableau par ordre alphabétique
    Par cafeine dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 17/09/2002, 08h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo