Macro excel

Résolu
Bonjour,

J'aimerais savoir si il est possible de créer une macro qui ne s'appliquera que sur des cellules sélectionnées à l'aide de la souris. En fait je voudrais appliqué une formule de calcul à une colonne mais cette colonne n'est pas la même dans mes différentes feuilles excel.

Merci de votre aide comme toujours

8 réponses

  1. Modérateur
    Bonjour,
    Oui c'est possible.
    Voici deux codes illustrant ce propos :
    Sub SelectionPlageAvecSourisetrestitution()
    Dim MonTableau() As String
    Dim Plage As Range
    Dim j As Integer
    Set Plage = Application.InputBox("Sélectionnez une plage !", "Sélection de cellules", Type:=8)
    MonTableau = Split(Plage.Address, ",")
        For j = 0 To UBound(MonTableau)
            MsgBox MonTableau(j)
        Next j
    End Sub


    'http://ericrenaud.fr/
    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


    1. Contributeur
      Bonjour,
      Appliquer un CALCUL sur une plage sélectionnée avec la souris ?? !! :-)

      Copier le code ci-dessous.
      Remplacer Sum par la fonction souhaitée.
      Sub TotalPlage()
          MsgBox = WorksheetFunction.Sum(Selection)
      End Sub

      Mettre un raccourci sur la macro. Par exemple Ctrl+P
      Mode d'emploi...
      Sélectionner une plage et taper le raccourci
      A+
      1. Contributeur
        Correction..
        Sub TotalPlage()
            Dim Tot As Double
            Tot = WorksheetFunction.Sum(Selection)
            MsgBox Tot
        End Sub

        Pour une colonne sélectionner la colonne en cliquant sur sont entête.
    2. Merci pour vos réponses,
      En fait mon probleme exact est que j'ai des chiffres 10, 110,1120. Je voudrais ramener ces chiffres a 6 chiffres soit 100000,110000, 112000. Mais ces chiffres ne sont pas tous le temps dans la même colonne dans mes feuilles excel. Elles sont des fois en colonne A ou C ... C'est pourquoi je voudrais créer une macro qui une fois sélectionne une colonne ou une plage. Ensuite une fois que cette sélection est faite j'insere 2 colonne sur la 1er je multiplie mon chiffre A1(10....) par 100000, sur la seconde j'utilise la fonction gauche (B1;6), je copie la valeur trouver et fait un collage valeur en A1 et supprime les 2 colonnes insérer au début.
      Voila en détail ce que je cherche a faire je sais pas si j'ai été assez clair.
      Merci a vous je débute en macro et je ne suis pas un expert c'est pour ca je fait appel à des experts comme vous.
      1. Contributeur
        Un truc qui fait tout en une fois ça t'intéresse ?
        J'ai supposé que tes cellules sont au format nombre.
        Sub ReCode()
        Dim Cel As Range, Txt As String
            For Each Cel In Selection
                Txt = Cel.Text & String(5, "0")
                Cel = Val(Left(Txt, 6))
            Next Cel
        End Sub

        Comme pour l'autre macro, mettre un raccourci.
        Mode d'emploi Idem aussi.. sélectionner la plage et taper le raccourci.
        ATTENTION : Si tu sélectionne toute une colonne ça va durer longtemp.
        Il faudrait une macro spécifique pour une sélection de colonne
        1. Contributeur
          Finalement, une macro qui fait les deux...
          Sub ReCode2() 
          Dim Cel As Range, Txt As String, TB 
          Dim plage As Range 
              TB = Split(Selection.Address, ":") 
              If UBound(TB) > 0 Then 
                  If TB(0) = TB(1) Then 'sélection colonne 
                      Set plage = Range(Cells(1, TB(0)), Cells(Cells(65536, TB(0)).End(xlUp).Row, TB(0))) 
                  Else 'sélection plage 
                      Set plage = Selection 
                  End If 
              Else 
                  Set plage = Selection 
              End If 
              For Each Cel In plage 
                  If Cel <> "" Then 
                      Txt = Cel.Text & String(5, "0") 
                      Cel = Val(Left(Txt, 6)) 
                  End If 
              Next Cel 
          End Sub

          Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
          NOTE : Je ne répond pas aux MP pour les questions techniques.
          1. Tout d'abord merci de vos réponses.
            La macro de pijaku marche pour la sélection mais après j'ai un problème pour intégrer la mienne à la suite qui plante. Par contre lermite22, t'as première macro ne fonctionne pas donc la fin de la seconde non plus. C'est peu être moi qui me trompe mais j'ai juste copier et coller sous visual basic.
            Merci à vous
            1. Contributeur
              J'ai tester la 2ème macro avant de la poster et elle fonctionne PARFAITEMENT

              QUEL EST L'ERREUR (sur quel ligne et le libellé de l'erreur)

              OU EST MISE LA MACRO (module de feuille ou module général)
              1. Je comprend pas car moi quand je la lance je n'ai pas d'erreur qui s'affiche. La macro marche sans débogage mais il y a aucune action qui se crée. Est ce le format de ma cellule d'origine? Ça y est en fait ça marché pas car j'avais des ,00 à la fin de mes chiffres si je les enlève ça marche.
                Merci pour votre aide comme d'habitude vous avez résolu mon problème. Vivement que j'approche votre niveau pour arrêter de vous embêter et aider les autres.