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 :

Calcul dans un tableau non désiré


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut Calcul dans un tableau non désiré
    Bonjour à tous,

    Voici mon problème. A l'aide des codes ci-joints je copie des données d'un tableau général vers un autre dans une autre feuille.
    Une fois la copie faite, il me met après la dernière remplie, le nombre de ligne comportant des données, et ça je souhaite le supprimer mais je n'y arrive pas.
    Pouvez-vous m'apporter votre aide s'il vous plait ?
    Merci par avance

    1er code je tape la lettre "P" en A3
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Worksheet_Activate()
    If Range("A2") = "" Then
    Range("A2").Select
        ActiveCell.FormulaR1C1 = "P"
        Range("A3").Select
    Else
    Range("A3").Select
    End If
    End Sub
    2ème code les données sont copiées si "P" est trouvé dans la colonne "G" du tableau général
    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim LastLig As Long, NewLig As Long, Nb As Long
    If Target.Address = "$A$2" Then
       Union(Range("A4:H" & Rows.Count), Range("J4:K" & Rows.Count)).ClearContents
       If Target <> "" Then
          With Sheets("Général")
            .Range("A3").AutoFilter
             LastLig = .Cells(Rows.Count, "G").End(xlUp).Row
             If LastLig < 4 Then
             If .Range("A3").AutoFilter = True Then .Range("A3").AutoFilter
             Exit Sub
             End If
             With .Range("A3:N" & LastLig)
                .AutoFilter
                .AutoFilter field:=7, Criteria1:=Target
             End With
             Nb = .Range("A3:A" & LastLig).SpecialCells(xlCellTypeVisible).Count - 1
             If Nb > 0 Then
                Application.EnableEvents = False
                .Range("A4:F" & LastLig).SpecialCells(xlCellTypeVisible).Copy Range("A4")
                .Range("I4:J" & LastLig).SpecialCells(xlCellTypeVisible).Copy Range("G4")
                .Range("L4:M" & LastLig).SpecialCells(xlCellTypeVisible).Copy
                .Range("J4").PasteSpecial xlPasteValues
                Application.CutCopyMode = False
                Application.EnableEvents = True
             End If
             .Range("A3").AutoFilter
            Range("A3").Select
          End With
          Range("A3").Select
        ActiveWorkbook.Worksheets("P").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("P").Sort.SortFields.Add Key:=Range("K4:K299"), _
            SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        ActiveWorkbook.Worksheets("P").Sort.SortFields.Add Key:=Range("B4:B299"), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With ActiveWorkbook.Worksheets("P").Sort
            .SetRange Range("A3:L500")
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Range("A3").Select
     
       End If
    End If
    AutoFitSheet
    End Sub
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Dans le code posté, aucune ligne ne permet d'entrée le nombre de lignes comportant des données juste deux variables utilisées pour borner les plages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    LastLig = .Cells(Rows.Count, "G").End(xlUp).Row
    '...
    Nb = .Range("A3:A" & LastLig).SpecialCells(xlCellTypeVisible).Count - 1
    Par contre, en fin de procédure le code appelle une autre procédure "AutoFitSheet" ou est elle ? Pour tester si c'est elle, mets là en commentaire.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour,


    voici le code lié à AutoFitSheet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Sub AutoFitSheet()
    If ActiveWorkbook Is Nothing Then Exit Sub
    Dim I
    If ActiveWindow.SelectedSheets.Count > 1 Then
    For I = 1 To ActiveWindow.SelectedSheets.Count
    ActiveWindow.SelectedSheets(I).Cells.EntireColumn.AutoFit
    Next
    Else
    Cells.EntireColumn.AutoFit
    End If
    End Sub
    Merci pour votre aide
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Citation Envoyé par NEC14 Voir le message
    Bonjour,


    voici le code lié à AutoFitSheet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Sub AutoFitSheet()
    If ActiveWorkbook Is Nothing Then Exit Sub
    Dim I
    If ActiveWindow.SelectedSheets.Count > 1 Then
    For I = 1 To ActiveWindow.SelectedSheets.Count
    ActiveWindow.SelectedSheets(I).Cells.EntireColumn.AutoFit
    Next
    Else
    Cells.EntireColumn.AutoFit
    End If
    End Sub
    Merci pour votre aide
    Désolé, j'ai répondu sous mon pseudo du boulot. Je suis bien RENE14
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  5. #5
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Au boulot je suis en 2003 donc je ne peut pas tester mais c'est bizarre que ça inscrive la valeur que tu dis car je ne vois vraiment pas quelle ligne de code peut faire ça à moins que quelque chose m'échappe ???

  6. #6
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Moi non plus je ne comprends pas. J'ai l'impression que le tableau réagit comme un TCD mais sans savoir pourquoi et comment.
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

  7. #7
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Points : 984
    Points
    984
    Par défaut
    Bonjour,

    Depuis ma dernière intervention sur ce sujet, je n'ai toujours pas trouvé de solutions. Je vais refaire le fichier autrement car c'est gênant au quotidien.
    Merci pour vos bons conseils.
    Amicalement
    René
    J’entends et j’oublie,
    Je vois et je me souviens,
    Je fais et je comprends.
    Confucius

Discussions similaires

  1. [A-02] Insérer un champ calculé dans un tableau croisé dynamique
    Par atoffoli75 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/11/2008, 08h55
  2. [AIDE] Calcul dans un tableau (JSP+Struts)
    Par Diablo_22 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 07/11/2008, 14h40
  3. Réponses: 23
    Dernier message: 07/05/2008, 08h09
  4. champs calculés dans un tableau croisé
    Par abdoing dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 23/08/2007, 19h11
  5. Réponses: 4
    Dernier message: 03/08/2007, 13h48

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