Sélectionner une plage de donnée entre 2 champs Textes.

miky973

XLDnaute Occasionnel
Bonjour,

Je rencontre un petit soucis, j'ai un fichier qui se met à jour continuellement et je veux créer un automatisme qui me permet de compter le nombre de ligne qui sont dans ce tableau.

Ce nombre de ligne étant variable, je souhaiterai comptabiliser le nombre de ligne entre le champs "ACTIONS" et le champs "LIBRE".

Cette formule devra me permettre également de calculer le poid moyen médian, min et max.

Comment faire cette action en VBA si Possible?.

JE vous remercie pour votre aide.

Miky
 

tototiti2008

XLDnaute Barbatruc
Re : Sélectionner une plage de donnée entre 2 champs Textes.

Bonjour miky

Si on a aucune idée de l'endroit dans la feuille où se trouvent les mots "ACTIONS" et "LIBRE", il va être difficile de te donner une réponse claire
Peut-être avec Application.Match...

Edit : Bonjour Pierrot ;)
 

miky973

XLDnaute Occasionnel
Re : Sélectionner une plage de donnée entre 2 champs Textes.

Re-Bonjour,

Voilà j'ai posté un exemple de ce que je voudrai réaliser.

Best regards.

Miky
 

Pièces jointes

  • Test.xls
    19 KB · Affichages: 39
  • Test.xls
    19 KB · Affichages: 44
  • Test.xls
    19 KB · Affichages: 42

Pierrot93

XLDnaute Barbatruc
Re : Sélectionner une plage de donnée entre 2 champs Textes.

Re, bonjour Toto, JNP

une solution vba :
Code:
Option Explicit
Sub test()
Dim x As Range, y As Range
Set x = Range("A:A").Find("ACTIONS", , xlValues, xlWhole, , , False)
If x Is Nothing Then Exit Sub
Set y = Range("A:A").Find("LIBRE", , xlValues, xlWhole, , , False)
If y Is Nothing Then Exit Sub
MsgBox "Nb de ligne :  " & (y.Row - x.Row) - 1
MsgBox "Moyenne : " & WorksheetFunction.Average(Range("B" & x.Row & ":B" & y.Row))
MsgBox "Maxi : " & WorksheetFunction.Max(Range("B" & x.Row & ":B" & y.Row))
MsgBox "Mini : " & WorksheetFunction.Min(Range("B" & x.Row & ":B" & y.Row))
End Sub

bon après midi
@+
 

miky973

XLDnaute Occasionnel
Re : Sélectionner une plage de donnée entre 2 champs Textes.

Re, bonjour Toto, JNP

une solution vba :
Code:
Option Explicit
Sub test()
Dim x As Range, y As Range
Set x = Range("A:A").Find("ACTIONS", , xlValues, xlWhole, , , False)
If x Is Nothing Then Exit Sub
Set y = Range("A:A").Find("LIBRE", , xlValues, xlWhole, , , False)
If y Is Nothing Then Exit Sub
MsgBox "Nb de ligne :  " & (y.Row - x.Row) - 1
MsgBox "Moyenne : " & WorksheetFunction.Average(Range("B" & x.Row & ":B" & y.Row))
MsgBox "Maxi : " & WorksheetFunction.Max(Range("B" & x.Row & ":B" & y.Row))
MsgBox "Mini : " & WorksheetFunction.Min(Range("B" & x.Row & ":B" & y.Row))
End Sub

bon après midi
@+

Bonjour à tous merci pour votre aide,

J'ai un peu mal agencé mon exemple, car il me faut aussi récupérer les valeurs entre "ACTIONS" et "LIBRE", car "ACTIONS" comprend une valeur à ne pas prendre en compte et LIBRE également. J'aime beaucoup ta macro Pierrot.

Pourrais tu m'indiquer comment dois je faire? J'espère avoir été plus clair dans la deuxième partie de mon problème.

A+
 

Pierrot93

XLDnaute Barbatruc
Re : Sélectionner une plage de donnée entre 2 champs Textes.

Re,

modifie comme suit, si j'ai bien compris, pas sûr...
Code:
Option Explicit
Sub test()
Dim x As Range, y As Range
Set x = Range("A:A").Find("ACTIONS", , xlValues, xlWhole, , , False)
If x Is Nothing Then Exit Sub
Set y = Range("A:A").Find("LIBRE", , xlValues, xlWhole, , , False)
If y Is Nothing Then Exit Sub
MsgBox "Nb de ligne :  " & (y.Row - x.Row) - 1
MsgBox "Moyenne : " & WorksheetFunction.Average(Range("B" & x.Row + 1 & ":B" & y.Row - 1))
MsgBox "Maxi : " & WorksheetFunction.Max(Range("B" & x.Row + 1 & ":B" & y.Row - 1))
MsgBox "Mini : " & WorksheetFunction.Min(Range("B" & x.Row + 1 & ":B" & y.Row - 1))
End Sub
 

miky973

XLDnaute Occasionnel
Re : Sélectionner une plage de donnée entre 2 champs Textes.

Re Pierrot93,
Elle est super top ta macro VBA, mais j'ai une toute dernière question,
Code:
Set x = Range("A:A").Find("ACTIONS", , xlValues, xlWhole, , , False)
If x Is Nothing Then Exit Sub
Set y = Range("A:A").Find("LIBRE", , xlValues, xlWhole, , , False)
If y Is Nothing Then Exit Sub

Je voudrai définir une feuille à parcourir pour la fonction FIND()
J'ai essayé Find(Feuil2!"ACTIONS", , xlValues, xlWhole, , , False)

Mais cela m'a donné une erreur, aurai tu la solution ?

Merci beaucoup pour ton aide,

A+
 

Pierrot93

XLDnaute Barbatruc
Re : Sélectionner une plage de donnée entre 2 champs Textes.

Re,

pour effectuer la recherche sur la colonne A de la feuille nommée "NomFeuille" :
Code:
Set x = Sheets("NomFeuille").Range("A:A").Find("ACTIONS", , xlValues, xlWhole, , , False)
If x Is Nothing Then Exit Sub
 

miky973

XLDnaute Occasionnel
Re : Sélectionner une plage de donnée entre 2 champs Textes.

Re,

pour effectuer la recherche sur la colonne A de la feuille nommée "NomFeuille" :
Code:
Set x = Sheets("NomFeuille").Range("A:A").Find("ACTIONS", , xlValues, xlWhole, , , False)
If x Is Nothing Then Exit Sub

Re, Tout cela fonctionne superbement bien, étant débutant dans le VBA, je me permet de te poser une dernière question si cela ne te dérange pas. Tu as mis des MsgBox ce qui sont très interessant, mais je n'arive pas à à rentrer ces valeurs dans une cellule.

Tel que Range("A1") = à la moyenne par exemple,

J'ai une erreur de méthode et de compréhension, pourrais tu m'éclairer?

et encore Merci pour tout.

A+
 

miky973

XLDnaute Occasionnel
Re : Sélectionner une plage de donnée entre 2 champs Textes.

Re,

A partir de la feuille 1 j'excute la macro de ma feuil2, je reçois l'erreur suivante :

Erreur 1004
"Impossible de lire la propriété Average de la Classe WorksheetFunction"

Si j'execute ma macro à partir de la feuil2 cela passe sans problème, Pourquoi et comment pallier à ce problème.

Merci pour ton aide,

A+

Miky
 

Pierrot93

XLDnaute Barbatruc
Re : Sélectionner une plage de donnée entre 2 champs Textes.

Re,

préciser le nom de la feuille quand ce n'est pas la feuille active ...
Code:
Sheets("NomFeuille1").Range("A1").Value  = WorksheetFunction.Average(Sheets("NomFeuille2").Range("B" & x.Row + 1 & ":B" & y.Row - 1))
 

Discussions similaires

Statistiques des forums

Discussions
312 429
Messages
2 088 350
Membres
103 823
dernier inscrit
ben talha redouane