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 :

[VBA-E] Boucle pour supression des dernieres cellules


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut [VBA-E] Boucle pour supression des dernieres cellules
    Bonjour à tous : je m'explique.

    Je voudrais sur chaque ligne (ces lignes avec des cellules contenant des données) suprimmer le nombre de dernières cellules égal au nombre contenu sur la première cellule.

    exemple :

    Si sur la première cellule de la colonne A on a le nombre 14, alors supprimer les 14 dernières cellules sur la ligne; de même si on a 2 sur la deuxième cellule de la colonne A, alors supprimer les 2 dernières cellules.

    j'ai été assez clair?? Merci de vos réponses!!!

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    et tu ve faire cela ou ? en VB6..? rajoute un tag à ton titre [VBA-E] ..!


    Citation Envoyé par amd64
    j'ai été assez clair?? Merci de vos réponses!!!
    quand tu dis supprimer on fait quoi on décale les cellules vers la gauche...? ou on efface leur contenu ... faut-t'il aussi effacer/supprimer la cellule de gauche.. A1...

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    juste supprimer leur contenu mais pas la premiere cellule de la ligne

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    tiens un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub EffaceNb()
     Dim p As Range ' plage parcourue
     Dim r As Range ' ligne de la plage
     Set p = ActiveSheet.Range("A1").CurrentRegion
     Dim iNb As Integer 'Nombre de ligne à effacer..
     For Each r In p.Rows 'Parcours les différentes lignes
      iNb = r.Cells(1).Value
      Range(r.Cells(1, 2), r.Cells(1, 2 + iNb)).ClearContents
    Next
    End Sub

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    c'est ça! mais il faudrait que ça le fasse dans l'autre sens, c'est à dire qu'il faudrait que les cellules soit supprimées de la droite vers la gauche.

    à l'origine:



    ce que je voudrait:
    http://kbbcperso.free.fr/end.JPG


    ta proposition:
    http://kbbcperso.free.fr/prposition.JPG




    Désolé d'insister...

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    as tu essayer de comprendre mon code précédent ? la solution n'été pas loin !
    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
     
    Sub EffaceNb()
     Dim p As Range ' plage parcourue
     Dim r As Range ' ligne de la plage
     Set p = ActiveSheet.Range("A1").CurrentRegion
     Dim iNb As Integer 'Nombre de ligne à effacer..
     Dim iMax As Integer 'Nombre de colonne dans sélection
     iMax = p.Columns.Count
     For Each r In p.Rows 'Parcours les différentes lignes
      iNb = r.Cells(1).Value
      If iMax > iNb + 1 Then
       Range(r.Cells(1, iMax - iNb), r.Cells(1, iMax)).ClearContents
       End If
    Next
    End Sub

  7. #7
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    peux-tu m'expliquer ce qu'il se passe ici :
    (car im supprime ma dernière ligne et efface le contenu de deux cellules au lieu d'une sur la première ligne)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If iMax > iNb + 1 Then
       Range(r.Cells(1, iMax - iNb), r.Cells(1, iMax)).ClearContents
    End If

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par amd64
    peux-tu m'expliquer ce qu'il se passe ici :
    (car im supprime ma dernière ligne et efface le contenu de deux cellules au lieu d'une sur la première ligne)



    If iMax > iNb + 1 Then
    Range(r.Cells(1, iMax - iNb), r.Cells(1, iMax)).ClearContents
    End If
    iMax et le nombre de colonne de la plage sélectionnée ( pour connaitre la plage sélection, ici current region , place toi sur la cellule A1 puis CTRL * )
    iNb est la valeur contenu dans cellule précédente.. en fait il doit falloir

    ensuite par l'instruction Range je définie une plage partant de la cellule

    r.Cells(1,iMAx-iNb) .. cellule sur ligne parcouru à iNb Cellule de la cellule de droite..
    Jusqu'a
    r.cells(1,iMax) .. la derniére cellule de la ligne en cours dans la boucle For..


    faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Range(r.Cells(1, iMax - iNb+1), r.Cells(1, iMax)).ClearContents
    ... PS: J'ai pas tester ... mais cela devrai être bon..dans le cas contraire on fera autremnt si iNb =1...



  9. #9
    Futur Membre du Club
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Points : 6
    Points
    6
    Par défaut
    magnifique!! it's alive! ALIVE!!

    ç a suffit avant qu'on me prenne pour je ne sais quoi.

    Merci infiniment de ton aide et de tes explications!!! Etant débutant en VBA et devant apprendre vite (et donc comprendre vite), je risque de opasser souvent...

    merci encore!!

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 20/06/2015, 13h02
  2. [XL-2007] Boucle pour fusionner des cellules
    Par Runsh63 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/10/2014, 15h31
  3. Boucle pour controler valeurs de cellules et faire des actions ensuite
    Par Le Rom dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/02/2010, 12h43
  4. [VBA-E]Boucle pour addition?
    Par LouBoulpi dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/02/2006, 20h50
  5. boucle pour insérer des enregistrements
    Par roots_man dans le forum ASP
    Réponses: 7
    Dernier message: 05/10/2004, 09h28

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