Sélections sur une plage variable

Bonsoir,

Je débute (vraiment) en VBA donc j'enregistre (en référence relative en l'occurrence) et je bricole.

Je fais un fichier client avec des macros pour faire des tris, (noms, dates, chiffre, etc ...).

J'ai aussi des macros pour insérer des lignes et en supprimer.

Je précise que j'ai excel 2016 mais que le fichier est enregistré en version 97-2003 (c'est pour offrir .

Mes deux problèmes :

LIGNES

  • Après avoir inséré des lignes, (ou supprimé), les tris ne fonctionnent plus car ils sont figés sur une zone précise
  • Quand j'enregistre, je sélectionne la ligne puis je fais un "fin-bas" pour aller à la dernière ligne remplie. Cela fonctionne toujours à l'écran mais quand je lis la macro, il précise Offset(0, 21).Range("A1:A72")
Du coup, si je suis maintenant à la ligne 76, la sélection n'est pas complète.

COLONNE

Je fais mes tris sur les lignes complètes car le tableau bouge en colonnes.

Quand j'insère une colonne, le tri continue de se faire sur la colonne 21 (sur l'exemple ci-dessus)

Merci par avance, (si mon post est compréhensible ...).

Problèmes de santés donc pas d'inquiétude si je ne répond pas du tac au tac.

JPh

Bonsoir,

La seule chose qui en ressort, c'est que tu crois débuter en VBA en faisant de l'enregistreur ! Sauf que VBA c'est de la programmation, l'enregistreur ce n'est que l'enregistrement de manipulations... Le résultat est sans doute du code, dans les 2 cas, on n'a pas d'autres noms pour les différencier, mais je dirai que le code enregistré, si on ne le réécrit pas intégralement, sa seule destination possible est la poubelle !

Je conseille donc d'éviter de perdre son temps à ne pas apprendre VBA avec l'enregistreur, et acquérir avec lui des habitudes néfastes pour la suite. A la place acquérir quelques rudiments nécessaires pour comprendre ce qu'est programmer en VBA et comment le faire, et s'y mettre en sachant ce que signifie le code qu'on écrira...

Enfin, bannir de son code tout Select, Selection, Activate et consorts... Quand sélectionner n'est pas la fin en soi (c'est à dire modifie l'affichage à l'intention de l'utilisateur, et s'arrête), c'est toujours une opération inutile, parasite, n'aboutissant qu'à ralentir l'exécution.

Il convient dès le départ de penser que si l'on utilise VBA ce n'est pas pour singer Excel, faire pareil qu'on le fait manuellement sur Excel mais au contraire faire autrement avec les outils dont dispose VBA...

Cordialement.

Salut JPh92, MFerrand,

un bon bouquin, les leçons VBA sur ce site (entre autres) et ne pas mettre la charrue avant les bœufs : MFerrand a raison (comme d'hab!).

Sans cela, tu vas, forcément, demander des coups de main à chaque ligne de ton cadeau!

Alors, hop, les yeux dans le cambouis, direct, pour ton tri dans une plage variable...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'
iRow = Cells(Rows.Count, 1).End(xlUp).Row
iCol = Cells(1, Columns.Count).End(xlToLeft).Column
sCol = Split(Columns(iCol).Address(ColumnAbsolute:=False), ":")(1)
'
If Not Intersect(Target, Range("A1:" & sCol & "1")) Is Nothing Then
    sKey = Chr(64 + Target.Column) & "2"
    Range("A2:" & sCol & iRow).Sort key1:=Range(sKey), order1:=xlAscending, Orientation:=xlTopToBottom
End If
'
End Sub

Bienvenue en VBA!

A+

11trivariable.xlsm (16.23 Ko)

Bonjour,

Merci pour vos réponses. Théorique avec laquelle je suis tout à fait d'accord même si je suis pris par le temps. Ne sachant pas par où commencer je me dis qu'en enregistrant cela me permet d'essayer de comprendre le code. Mais je lis ici que cela reviendrait à apprendre le français en commençant par le SMS…

Merci aussi pour les quelques lignes pratiques dans lesquelles je vais me jeter à corps perdu afin de concatèner vos deux réponses.

Je commençais effectivement à avoir l'impression d'avoir besoin d'aide à chacune des lignes de code avec l'enregistrement

J'ai acheté des bouquins, mais un bébé, les aléas de la vie, le boulot… On essaye de gagner du temps où on peut.

Et bien cela ne sera pas avec un enregistreur et je vais fouiner sur le forum pour voir comment apprendre petit à petit.

Merci à vous.

Salut JPh92,

mais un bébé, les aléas de la vie, le boulot…

... comme je te comprends (j'en ai 5!), ce qui ne m'a jamais empêché de commencer par 1+1!

Comme je le répète souvent à mes enfants-étudiants, courage et détermination sont les mamelles de la réussite, de nos jours!

A te revoir un de ces 4,

A+

Rechercher des sujets similaires à "selections plage variable"