Macro excel

Résolu/Fermé
greg - 15 déc. 2011 à 09:14
 greg - 16 déc. 2011 à 09:07
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

A voir également:

8 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
15 déc. 2011 à 09:36
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


0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
15 déc. 2011 à 10:01
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+
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
15 déc. 2011 à 10:10
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.
0
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.
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
15 déc. 2011 à 11:43
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 15/12/2011 à 11:46
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.
0
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
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
15 déc. 2011 à 18:34
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)
0
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.
0