Macro avec 7 opérations

Re-Bonjour,

Je vous explique, dans la macro que j'ai enregistré, le VBA sélectionne la plage A10:L15 (de la cellule A10 à L15).

Certes, mon but est de dire à cette Macro, de sélectionner d'abord, de A10 à L10, puis ensuite d'aller vers le bas jusqu'à la dernière ligne non vide de la plage. (Car les plages sur lesquelles je souhaite exécuter cette macro changent; càd leur nombre de lignes varient, par exemple A10:L34 ou encore A10:L49). Je sais pas si c'est plus clair cette fois-ci ?

Je suis pas sur, je pense qu'il faut juste changer à chaque fois la ligne dans le VBA : Range("A10:L15").Select

Par un VBA qui commande à Excel d'aller jusqu'à la dernière ligne non vide, genre (A10:Lxx dernière ligne non vide) ?

Je vous remercie encore une fois votre aide précieux !

Bonjour las-dias,

Dans son message d'hier à 21:34, curulis57 t'a donné le bon code VBA à utiliser, et dans son message de 23:47,

il a confirmé le code VBA que tu as indiqué en remplacement (celui qui figure après le mot « PAR »).

J'ajoute que pour faire ce que tu veux faire, il n'est pas utile d'utiliser .Select (et même préférable de l'éviter) ;

de plus, c'est préférable également d'éviter d'utiliser le langage obsolète (dépassé) des macros XL4 (sauf

dans les cas où il n'existe pas d'équivalent VBA) ; enfin, ce n'est pas utile non plus d'utiliser ton PC : tu peux

tout aussi bien travailler à la main, avec du papier et un crayon ; non, t'inquiètes pas, ce dernier point est

juste une petite blague !


Si j'ai bien compris, tu veux mettre un fond jaune (couleur de remplissage) à cette plage de cellules :

colonnes A à L, lignes 10 à la dernière utilisée (variable).

Je te propose alors ce code VBA :

Option Explicit

Sub PlageJaune()
  Dim dlig As Long ' dernière ligne
   dlig = Cells(Rows.Count, "L").End(xlUp).Row
  If dlig > 10 Then Range("A10:L" & dlig).Interior.ColorIndex = 6
End Sub

⚠ Le calcul de la dernière ligne est fait selon la colonne L car c'est ce qui était déjà fait dans les codes précédents ;

cependant, et c'est en fonction de tes données, il se pourrait que ce soit plus judicieux de faire ce calcul selon

par exemple la colonne A ; si oui, mettre : dlig = Cells(Rows.Count, "[b][i][color=#FF0000]A[/color][/i][/b]").End(xlUp).Row

Le test If dlig > 10 est au cas où ton tableau de départ est vierge : aucune ligne de données n'a encore été saisie,

et c'est en supposant que la ligne n° 10 est celle des en-têtes du tableau ➯ on mettra du jaune pour le corps

du tableau seulement, pas pour les en-têtes.

Enfin, la couleur jaune utilisée dans ton PATTERN initial est le jaune foncé de la palette de couleurs,

et dont le n° d'index est 6.Interior.ColorIndex = 6 ; regarde l'aide Excel pour plus de détails

sur ColorIndex, et aussi sur Color (pour bien voir la différence entre les deux).

Merci de me donner ton avis sur ce petit topo.

Cordialement

Bonjour à tous,,

D'abord, je voudrai vous remercie pour l'ensemble de votre aide et pour le temps que vous avez accordé à ce problème .

Malheureusement, j'ai toujours réussi à obtenir ce que je souhaite. J'ai essayé en plusieurs reprises vos réponses, Curulis57 et Dhany, certes, à chaque fois Excel m'affiche une erreur d’exécution .

Pour vous donnez une idée de la macro,voici ci-dessus les manipulations que j'ai enregistré dans le VBA et le fichier en PJ:

Feuille 1:

1- Supprimer les colonnes C, D et I, J, K

2- Supprimer les lignes 5, 6, 7

3- Mettre sous forme de tableau (toujours de A10 à la colonne L, puis jusqu’à la dernière ligne Non vide : ce que j'ai pas réussi à faire),

4- Filtrer I10 par un ordre décroissant

5- Mise en Forme Conditionnelle de toute la plage (A10 :Lxxx ?), par formule: =$I10=0 (couleur verte clair)

Feuille 2:

6- Supprimer les colonnes C, D

7- Mettre sous forme de tableau (toujours de A6 à la colonne H, puis jusqu’à la dernière ligne Non vide : ce que j'ai pas réussi à faire)

8- Mise en Forme Conditionnelle de toute la plage (A6 :L xxx ?), par la formule =$H6="Missed" (couleur rouge clair)

Certes, ma macro se limite à la ligne L200 dans la feuille 1 et à la ligne H100 dans la feuille 2

Le but : est de dire à cette macro, de faire (les opérations 3,4 et 5 dans la feuille 1 ) en partant de A10 à la colonne L puis jusqu’à la dernière ligne Non vide de la plage. Et pas seulement jusqu'à L200 uniquement

même chose pour la feuille 2, (faire 7 et 8) pas uniquement en allant jusqu'à H100, mais en allant toujours de A6 à la colonne H puis jusqu’à la dernière ligne Non vide de la plage. Genre (A6 :Hxx)

10trainingmacro.xlsx (12.49 Ko)

Le fichier que tu as mis en PJ est "Trainingmacro.xlsx" ; or un fichier .xlsx ne peut pas contenir de macros !

Tout ce que tu as pu faire en VBA dedans a été perdu, car ça n'est pas enregistré !

⚠ Seuls les classeurs .xlsm peuvent contenir des macros.

⚠ Seuls les classeurs .xlsm peuvent exécuter des macros (et à condition aussi que les macros soient activées).


Quand tu veux faire des macros à partir d'un nouveau classeur, tu dois l'enregistrer avec ce type de fichier :

« Classeur Excel (prenant en charge les macros) »

Si tu as déjà un classeur .xlsx et que tu veux y mettre des macros, tu dois d'abord l'ouvrir, puis faire F12 ➯

fenêtre « Enregistrer sous » ; sous « Nom de fichier : », tu as une liste « Type : » : c'est là que tu dois

choisir « Classeur Excel (prenant en charge les macros) » ➯ sauvegarde du .xlsx en .xlsm

Bonjour las-dias (..)

@las-dias

las-dias a écrit :

J'ai essayé en plusieurs reprises vos réponses, Curulis57 et Dhany

et ma proposition "bombe atomique" comme dit currulis57 Est-ce que tu as tenté de comprendre comment elle pourrait résoudre ton problème ?

Bonjout à tous,

Après un bon moment de bidouillage dans le VBA, finalement j’ai réussi à obtenir la macro que je souhaite, celle-ci bien évidemment et sans aucun doute grâce à votre aide et vos réponses très RAPIDES. Sans vous, j'aurai pas eu ce que je souhaitais.

Curulis57, Dhany et NCC, je voudrai vous remercie beaucoup pour le temps que vous m'avez accordé et pour votre aide précieux

Salut tout le monde,

ben, NCC, Dhany..., je crois que nous ne saurons jamais!

Bravo las-dias, tu t'es manifestement débrouillé comme un chef!

A+

(..)

curulis57 a écrit :

ben, NCC, Dhany..., je crois que nous ne saurons jamais!

Je suis certain qu'il n'a même pas tenté ma bombe atomique allez je suis bon prince curulis57 je te cède les droits, cadeau

Bonjour à tous,

Voici le VBA de la macro en question, si ça peut interesser quelqu'un.

Sub f2_Macro()

'

' F2_Macro Macro

'

Range("C:C,D:D").Select

Range("D1").Activate

Selection.Delete Shift:=xlToLeft

Range("I:I,J:J,K:K").Select

Range("K1").Activate

Selection.Delete Shift:=xlToLeft

Range("5:5,6:6,7:7").Select

Range("A7").Activate

Selection.Delete Shift:=xlUp

'

iRow = Range("L" & Rows.Count).End(xlUp).Row

Range("A10:L" & iRow).Select

'

ActiveSheet.ListObjects.Add(xlSrcRange, Range("A10:L" & iRow), , xlYes).Name = _

"Tableau1"

Range("Tableau1[#All]").Select

ActiveSheet.ListObjects("Tableau1").TableStyle = "TableStyleMedium4"

ActiveWindow.SmallScroll Down:=-6

ActiveWorkbook.Worksheets(1).ListObjects("Tableau1"). _

Sort.SortFields.Clear

ActiveWorkbook.Worksheets(1).ListObjects("Tableau1"). _

Sort.SortFields.Add Key:=Range("Tableau1[[#All],[Remaining]]"), SortOn:= _

xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal

With ActiveWorkbook.Worksheets(1).ListObjects("Tableau1" _

).Sort

.Header = xlYes

.MatchCase = False

.Orientation = xlTopToBottom

.SortMethod = xlPinYin

.Apply

End With

ActiveWindow.SmallScroll Down:=-12

Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$I10=0"

Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority

With Selection.FormatConditions(1).Interior

.Pattern = xlSolid

.PatternColorIndex = xlAutomatic

.ThemeColor = xlThemeColorAccent6

.TintAndShade = 0.599963377788629

End With

Selection.FormatConditions(1).StopIfTrue = False

Range("A1").Select

Sheets(2).Select

Range("C:C,D:D").Select

Range("D1").Activate

Selection.Delete Shift:=xlToLeft

'

iRow = Range("H" & Rows.Count).End(xlUp).Row

Range("A6:H" & iRow).Select

'

ActiveWindow.SmallScroll Down:=-72

ActiveSheet.ListObjects.Add(xlSrcRange, Range("A6:H" & iRow), , xlYes).Name = _

"Tableau2"

Range("Tableau2[#All]").Select

ActiveSheet.ListObjects("Tableau2").TableStyle = "TableStyleMedium18"

ActiveWindow.SmallScroll Down:=-18

Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _

"=$H6=""Missed"""

Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority

With Selection.FormatConditions(1).Interior

.PatternColorIndex = xlAutomatic

.Color = 11250687

.TintAndShade = 0

End With

Selection.FormatConditions(1).StopIfTrue = False

Range("A1").Select

Sheets(1).Select

Range("A1").Select

End Sub

Rechercher des sujets similaires à "macro operations"