Problème de selection

  • Initiateur de la discussion Initiateur de la discussion MLT
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

MLT

XLDnaute Nouveau
Bonjour,

Voici mon problème: Je met le fichier en pièces jointes.

Je veux pour l'instant mettre un mot dans la colonne 7 dès que le nom d'un bloc change. Par exemple en (17,7) puis en (32,7) etc...

Le mot dans le script est "hihihi", à terme à la place du mot, il y aura la moyenne des valeurs concernées, mais je code par étape.

Le problème c'est que j'y arrive pour le premier bloc mais pas pour les autres. Je pense que c'est un problème de sélection.


Voici le code:
Code:
Sub calcul_moyenne()
Dim cellule As Variant
Dim test As Integer
Dim ligne, colonne As Integer
Dim pointeur As Integer
test = 1

ligne = 2       'sert à faire ma selection de début de boucle
colonne = 5
pointeur = 3
While (test < 3)
Cells(ligne, colonne).Select            'selection
cellule = Selection.Value

If (cellule = ActiveCell.Offset(pointeur, 0).Value) Then            'le test
pointeur = pointeur + 3
 
Else
Cells(pointeur - 1, 7).Value = "hihihi"                         'il y aura la moyenne quand le script marchera
Range("I3").Value = pointeur
ligne = pointeur + 2                          'la ligne pour la nouvelle selection
test = test + 1
'Cells(ligne, colonne).Select
'cellule = Selection.Value
'Range("H5").Value = ligne
'Range("H6").Value = colonne
'Range("H7").Value = pointeur

pointeur = 3
End If

Wend

End Sub


Vu que mon code est bordélique je sais pas si quelqu'un pourra m'aider, mais je tente quand même.
 

Pièces jointes

Re : Problème de selection

Bonjour MLT,

Un essai avec la macro suivante:
VB:
Option Explicit

Sub Moyenne()

Dim plage As Range, LigneDeb As Long, LigneFin As Long
Dim i As Long, ancienBloc As String
Dim SommeLAI As Single, NbLai As Long

'activation de la feuille 'mesure' et effacement
Sheets("mesure").Activate
Range(Range("G2"), Cells(Rows.Count, "g")).ClearContents

'Détermination de la ligne de fin des blocs
LigneDeb = 2
LigneFin = Cells(Rows.Count, "e").End(xlUp).Row

'initialisation des différents compteurs
ancienBloc = Cells(2, "e")
SommeLAI = Cells(2, "f"): NbLai = 1

'Boucle sur la colonne des blocs
For i = LigneDeb + 3 To LigneFin + 3 Step 3
  If Cells(i, "e") = ancienBloc Then
    ' on est toujours sur le même bloc
    SommeLAI = SommeLAI + Cells(i, "f")
    NbLai = NbLai + 1
  Else
    'on change de bloc et on inscrit la moyenne
    Cells(i - 3, "g") = SommeLAI / NbLai
    'on réinitialise les différents compteurs
    SommeLAI = Cells(i, "f"): NbLai = 1
    ancienBloc = Cells(i, "e")
  End If
Next i
  
End Sub
 

Pièces jointes

Re : Problème de selection

Bonjour le fil, bonjour le forum,

Pour récupérer la dernière ligne éditée d'une colonne col, on se positionne dans la dernière ligne de cette colonne, qui avant était Cells(65536, col) mais avec les nouvelles versions d'Excel il vaut mieux dire Cells(Application.Rows.Count, col), puis on e déplace vers le haut en combinant avec la touche [End] (comme j'ai un clavier anglais j'imagine que sur un clavier français se doit être la touche [Fin]) et on récupère le numéro de ligne Row. Pour la dernière ligne éditée de la colonne E cela donne :
Code:
LigneFin = Cells(Application.Rows.count, "e").End(xlUp).Row
ou, E átant la cinquième colonne :
Code:
LigneFin = Cells(Application.Rows.count, 5).End(xlUp).Row

De la même manière pour atteindre la dernier colonne éditée de la ligne 1 on aurait :
Code:
ColFin = Cells(1, Application.Columns.Count).End(xlToLeft).Column
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
523
Réponses
17
Affichages
481
Retour