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 :

Monter des cellules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut Monter des cellules
    Bonsoir à tous, voila j'essaie de monter des cellules qui sont écrite pour les mettres à la place de cellules vide. J'ai ce code qui fonctionne :
    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
    Sub Monter()
    Dim PlageSource As Range
     
    On Erreur GoTo Erreur
     
    Set PlageSource = Application.InputBox _
            ("Sélectionner à partir des cellules vides jusqu'à la dernière cellules à monter ! ", "Sélection Plage", Type:=8)
     
    PlageSource.SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
     
     
    Exit Sub
     
    Erreur:
    If Err.Number = 424 Then Exit Sub
     
    End Sub

    Le soucis avec se code est que sa me monte toutes les cellules (même celles qui ne sont pas selectionnée). Est-ce que quelqu'un sait comment faire ? Merci de vos réponse

  2. #2
    Membre expérimenté Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Par défaut
    Euh ben comme ça je dirais que c'est normal vu que tu supprimes les lignes vides... Tout le reste remonte donc automatiquement...

    Si tu veux "Monter" juste tes cellules sélectionnées le mieux c'est sans doute de les couper et de les recoller.
    J'ai modifié ton code de la manière suivante :

    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
    Sub Monter()
        Dim PlageSource As Range
        Dim wsFeuilleActive As Worksheet
        Dim wsNouvelleFeuille As Worksheet
        
        Application.ScreenUpdating = False
        
        On Error Resume Next
        
        Set wsFeuilleActive = ActiveSheet
        Set PlageSource = Application.InputBox _
        ("Sélectionner à partir des cellules vides jusqu'à la dernière cellules à monter ! ", "Sélection Plage", Type:=8)
        
    '---->Ajoute une nouvelle feuille, y copie ta plage et efface les valeurs de la plage initiale
    
        Set wsNouvelleFeuille = Worksheets.Add
        PlageSource.Copy Destination:=wsNouvelleFeuille.Range("a1")
        PlageSource.Clear
        
    '---->Efface les blancs et recopie la plage modifiée à la place de l'ancienne
        
        wsNouvelleFeuille.Range("A1", Cells(PlageSource.Rows.Count, PlageSource.Columns.Count)).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlUp
        wsNouvelleFeuille.UsedRange.Copy Destination:=PlageSource.Cells(1, 1)
        
    '---->Efface la feuille créée et réactive la première
        
        Application.DisplayAlerts = False
        wsNouvelleFeuille.Delete
        Application.DisplayAlerts = True
        
        wsFeuilleActive.Activate
        
        Application.ScreenUpdating = True
        
    End Sub
    Dis moi si ça correspond à ce que tu voulais

  3. #3
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    D'instinct et par ce que je n'aime pas "me faire du rentre-dedans", je ferais une boucle décroissante, de la dernière cellule à la première, en supprimant au passage les cellules vides.
    De cette façon, je ne risquerais pas de me faire des croche-pieds avec des modifications de position des cellules du fait de la suppression de celles qui étaient vides.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut
    Bonjour, oui sa marche, le seul soucis est que ma boite de dialogue qui s'ouvre pour sélectionner les cellules ne fonctionne plus avec la souris (pour sélectionner il faut les taper manuellement). Est-ce qu'il y a une petite modif à faire pour que l'on puisse se servir de la souris sur la boite de dialogue ?
    Sinon, j'ai modifié un endroit du code pour ne pas qu'il m'efface les bordures :
    Set wsNouvelleFeuille = Worksheets.Add
    PlageSource.Copy Destination:=wsNouvelleFeuille.Range("a1")
    PlageSource.ClearContents

    Voila merci pour l'aide et si quelqu'un peut me dire comment faire pour pouvoir sélectionner avec la souris sa serai bien. Merci

  5. #5
    Expert éminent


    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
    Par défaut
    Citation Envoyé par salsitawapa
    ....
    Voila merci pour l'aide et si quelqu'un peut me dire comment faire pour pouvoir sélectionner avec la souris sa serai bien. Merci
    ben un userform et le contrôle refEdit..

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 12
    Par défaut
    Bonjour, le soucis est que avant (avec le 1er code que j'ai mis), il n'y avait pas besoin de userform et refedit. Y a t'il un autre moyen pour pouvoir se reservir de la souris ? comme il était possible avec la suppression des lignes ?
    Merci

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

Discussions similaires

  1. Colorier le fond des cellules d'une stringrid
    Par ORLIK dans le forum C++Builder
    Réponses: 7
    Dernier message: 09/11/2004, 21h22
  2. [NETBEANS] Monter des librairies
    Par Yann dans le forum NetBeans
    Réponses: 1
    Dernier message: 02/07/2004, 14h12
  3. Problemes avec des cellules vides
    Par arsgunner dans le forum ASP
    Réponses: 7
    Dernier message: 14/06/2004, 08h42
  4. [JTable]Aligner le contenu des cellules
    Par )3lade dans le forum Composants
    Réponses: 2
    Dernier message: 09/03/2004, 13h24
  5. [] [Excel] Fusionner des cellules
    Par SamyD dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/12/2002, 18h37

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