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 :

Incrémentation après suppression de lignes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 43
    Par défaut Incrémentation après suppression de lignes
    Bonjour

    suite à une macro qui supprime certaines lignes

    l'incrémentation originale s'en trouve perturbée
    à la place de 1, 2, 3, 4, 5, 6 etc...
    je peux me retrouver avec , 2, 5, 6, 10, 13 etc...

    aussi j'ai décider de ne pas faire d'incrémentation originale avant la suppression des lignes mais il m'en faut qu'en même une après.

    j'ai bien tenter quelques chose mais l'incrémentation ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Rectangle1_Clic()
    Dim l As Long
    Dim k As Long
     
    For l = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
        If Cells(l, "Z").Value = 1 Then Cells(l, 1).EntireRow.Delete
    Next l
     For k = 1 To 5000
     If .Range("F:I").Value > 0 Then
    Range("A" & k).Value
    Next k
    MsgBox "Opération Terminée"
     
    End Sub
    Un p'tit coup de main serais le bienvenu
    Merci

  2. #2
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour alpilon le forum que cherche tu a faire excatement pas bien compris si tu pouvez approfondir??

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 43
    Par défaut
    Bonsoir Laetitia

    en fait une fois que la boucle avec la variable l (suppression de lignes) est terminée, le tableau se retrouve avec moins de lignes et j'aimerais qu'il me réincrémente automatiquement la colonne "A" (vide) avec 1,2,3,4,5 etc...

    ce fichier est pour d'autres utilisateurs et je ne veux pas leur faire faire trop de manips manuelles c'est pourquoi je voulais automatiser cette procédure

    merci

  4. #4
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re, un truc dans ce genre peut être!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
    Sub es()
    Dim l As Long, k As Long
    Application.ScreenUpdating = False
      For l = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
        If Cells(l, "Z").Value = 1 Then Rows(l).Delete
     Next l
    For k = 1 To 5000
    If Cells(k, 6) > 0 And Cells(k, 9) > 0 Then Cells(k, 1) = k
    Next k
    MsgBox "Opération Terminée"
    End Sub

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 43
    Par défaut
    Bonsoir Klotz

    J'ai retenu ton code puisque c'est celui qui s'adapte plus facilement à mon idée, mais je suis une bille en VBA

    maintenant il incrémente à partir de A12 et c'est ce que je veux mais j'aimerais qu'il suivent l' idée que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Column <= 9 Then
    Incrémentation.

    D'autre part 3 problèmes subsistent
    1/ la variable Target n'est pas reconnue

    2/ mes lignes ne se sont jamais supprimées avant l'incrémentation

    3/ il me met erreur 91

    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
    Sub es()
     
    Dim l As Long
    Dim CEL, prem, dern As Range
    Dim compte As Long
    Dim Target As Range
     
    For l = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
        If Cells(l, "Z").Value = 1 Then Cells(l, 1).EntireRow.Delete
    Next l
     
    Set prem = Range("A12")
    Set dern = Range("B65000").End(xlUp).Offset(0, -1)
     
       Range("a12").Select
          Range(prem, dern).Select
     
    For Each CEL In Range(prem, dern)
    If Target.Column <= 9 Then
    compte = compte + 1
    CEL.Value = compte
    End If
    Next CEL
     
    MsgBox "Opération Terminée"
    End Sub
    Merci pour l'aide

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 43
    Par défaut
    Bonsoir La Zélie

    Mon code pour la suppression des lignes ne me pose pas de problème
    c'est la réincrémentations des lignes restantes suivant condition qui bloque

    Quant à la Corse c'est trè beau sans ordi et sans trop de béton

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 15
    Par défaut
    Ou comme ça:
    (par défaut, je numérote en colonne A, sinon change)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim CEL, prem, dern As Range
    Set prem = Range("A1")
    Set dern = Range("B65000").End(xlUp).Offset(0, -1)
     
       Range("a1").Select
          Range(prem, dern).Select
     
    For Each CEL In Range(prem, dern)
                        'ou aussi : For Each CEL In Range("a1:a50")
    compte = compte + 1
    CEL.Value = compte
    Next CEL
    et surtout, si tu utilises:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    assure-toi d'avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = True
    après !

  8. #8
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re,Klotz en ce qui concerne ce sujet assez recurant d'ailleurs dans ce type de code tu es pas oblige de redefinir a true. end sub le fait trés bien
    il y a de rare cas ou on est oblige de le faire

    un exemple quand j'optimise au max j'utilise ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
    Sub es()
    'declarer les variables au plus juste
    With Application
    .ScreenUpdating = False
    .DisplayAlerts = False
    .Calculation = xlCalculationManual
    'ton code
    .ScreenUpdating = True
    .DisplayAlerts = True
    .Calculation = xlCalculationAutomatic
    End With
    End Sub
    tu remarques je redefinis a true je le fais uniquement pour le calcul pour qu'il repasses en auto..auremement aprés end sub il va reste en manuel

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 121
    Par défaut
    Bonsoir à tous et à laetitia en particulier qui a souvent des idées originales.

    Peut être que ce code( que j'ai copié quelque part, je ne sais plus où car c'est un classique ) va t'aider, je l'utilise dans mes applications excel sans problèmes d'incrémentation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub EffacerLignesVides()
    Dim i As Long
    For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
        If Application.CountA(Rows(i)) = 0 Then Rows(i).Delete
    Next i
     
    End Sub
    un peu de recherche ne fait pas de mal!

    Je me suis fait un petit plaisir de donner une solution qui marche car pendant 1,5 mois je n'avais pas accès à Internet - j'étais en Corse dans une résidence neuve livrée en juillet dernier sans FT donc sans internet "ah ces corses!! "

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Augmentation de la taille d'un fichier après suppression de lignes
    Par paulinegue dans le forum Conception
    Réponses: 4
    Dernier message: 08/08/2011, 11h12
  2. [XL-2003] VBA problème avec la une boucle for range.end(xlup).row après suppression de lignes
    Par JohnNC115 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 25/01/2011, 10h21
  3. Réactualiser la taille d'un Fichier DBF après suppression de lignes
    Par oiapoque dans le forum Bases de données
    Réponses: 2
    Dernier message: 24/07/2006, 13h52
  4. Problème de taille après suppression de lignes dans un recordset...
    Par nikko_54 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/04/2006, 22h18
  5. [JTable] problème après suppression d'une ligne
    Par fredo3500 dans le forum Composants
    Réponses: 7
    Dernier message: 17/03/2005, 10h01

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