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 :

Sélection de plage à la souris et glissé de formule [XL-2010]


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
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Par défaut Sélection de plage à la souris et glissé de formule
    Bonjour à tous,
    Je me permets de revenir sur ce forum, car la dernière fois vous m'avez bien aidé !
    Aujourd'hui mon problème c'est que je voudrais faire un code à partir de deux codes que j'ai eu sur internet. (Compiler un hamburger quoi^^)
    Pour commencer je vous explique le but de ma macro.
    1. Appuyer sur mon bouton lié à ma macro (ça je sais faire)
    2. Une boite de dialogue qui s'ouvre et qui me demande de sélectionner une cellule ou une plage.
    3. Glisser la formule (contenue dans la plage précédemment sélectionnée jusqu'à la dernière ligne de la colonne d'à côté
    Je vous copie les deux codes que j'ai trouvé :

    Le premier :

    Permet de sélectionner une plage avec la souris (Méthode InputBox)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Permet de sélectionner une plage avec la souris (Méthode InputBox)
    Sub SelectionPlageAvecSouris()
          Dim Plage As Range
          Set Plage = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)
          MsgBox ("La plage que vous avez séléctionnez est : " & Plage.Address)
    End Sub
    Le deuxième

    Permet de faire glisser les formules jusqu'à la fin de la colonne d'à coté.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("D2:G2").Select
    Selection.AutoFill Destination:=Range("D2:G" & Range("D65536").End(xlUp).Row)
    Voilà j'espère avoir étais claire

    Bonne soirée à vous.

  2. #2
    Expert confirmé
    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
    Par défaut
    Bonjour,

    Je ne sais pas si c'est ce que tu cherche mais teste pour voir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub SelectionPlageAvecSouris()
     
        Dim Plage As Range
     
        Set Plage = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)
     
        Range(Plage, Plage.Offset(0, 1)).AutoFill _
              Plage.Resize(Plage.Rows.Count + Cells(Rows.Count, Plage.Column + 1).End(xlUp).Row _
              - Plage.Rows.Count, Plage.Columns.Count + 1)
     
    End Sub
    Hervé.

  3. #3
    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
    Avec gestion abandon saisie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      Dim r As Range
      On Error Resume Next
       Set r = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)
      On Error GoTo 0
       If Not r Is Nothing Then
          r.Rows("1:2").AutoFill r
        Else
          MsgBox "Aucune plage sélectionnée", vbCritical
        End If

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Par défaut
    Bonjour, à vous

    Merci pour cette réponse rapide !

    Alors j'ai regardé un peu les codes.

    Alors pour le premier de Thèze :

    j'ai fait un copier-coller de la macro cela n'a pas l'air de marcher en l'état.
    J'ai essayé de comprendre le code mais en vain... désoler pour mon petit cerveau étriquer

    Et pour le deuxième:

    pareil j'ai copié le code, ça marche mais j'aimerais apporter une petite amélioration.
    Pour ce code il faut que je sélectionne la plage (dans la boite de dialogue) où les formules vont être glissées :

    Par exemple si je veux glisser la B1 jusqu'à B1000 je dois sélectionner la plage "B1: B1000"
    Serait-il possible de modifier le code pour que je sélectionne uniquement B où la plage qui contient les formules et ensuite que la macro se base sur la colonne d'à côté, dans cet exemple la colonne A, pour glisser les cellules?

    En gros la macro se dit bonne alors une cellule en B ok! Tiens Tiens la colonne "A1" va jusqu'à A1000! Bon! OK! je glisse la formule qui est en B1 (ou B1:F1) jusqu'à B1000 (où B1000:F1000)!!

    P.S : Et si la plage sélectionner et discontinu du type : D4: D13;F4:F13 ?

    Merci beaucoup pour le travail fourni !

    A bientot

  5. #5
    Expert confirmé
    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
    Par défaut
    Re,

    J'ai rendu un poil plus simple la macro (enfin tout est relatif), il faut dire que j'avais mal interprété ta requête.
    Tu sélectionne A1 où se trouve la formule à faire glisser et cette dernière sera tirée jusqu'à hauteur de la dernière cellule non vide de la colonne située à droite de la sélection (pour toi la colonne B) jusqu'à A1000 :
    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 SelectionPlageAvecSouris()
     
        Dim Plage As Range
        Dim L As Long
     
        Set Plage = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)
     
        'recherche la dernière cellule non vide dans la colonne située à droite de la sélection
        'et retourne le numéro de la ligne
        L = Cells(Rows.Count, Plage.Column + 1).End(xlUp).Row
     
        'Recopie la formule jusqu'à hauteur de la dernière cellule de la colonne située à droite
        'de la sélection
        Plage.AutoFill Plage.Resize(Plage.Rows.Count + L - Plage.Rows.Count, Plage.Columns.Count)
     
    End Sub
    Hervé.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 33
    Par défaut
    Salut Hervé,
    Alors j'ai testé ça marche nickel !
    Merci beaucoup de ton aide

    Je vais essayer maintenant de faire en sorte que le code gère des plages non contiguës ^^

    Faudra modifier cette ligne je pense :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L = Cells(Rows.Count, Plage.Column - 1).End(xlUp).Row
    Je vais essayer ça aujourd'hui ou demain, donc je pense revenir vous demandez de l'aide la semaine prochaine hé hé

    Encore merci en tout les cas !!

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

Discussions similaires

  1. [VBA-E] COUNTIF sur une sélection de plage variable
    Par NiKoS29 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/09/2007, 00h03
  2. débutant: sélection de plage
    Par billy78 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/08/2007, 16h23
  3. Sélection d’une plage de cellule
    Par Domver dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/07/2007, 15h16
  4. Réponses: 1
    Dernier message: 09/03/2007, 08h52
  5. Macro en fonction d'une sélection de plage de cellules.
    Par Labiche dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/08/2006, 11h23

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