Répartir des valeurs

  • Initiateur de la discussion Initiateur de la discussion kabale53
  • 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 !

kabale53

XLDnaute Occasionnel
Bonjour
Pourriez-vous m'aider a répartir des colonnes (chacune composée de quatre valeurs) situées dans la plage
(E9:AR12) et ce dans trois plages (E18:N21) ; (O18:X21) et (Y18:AR21) de la maniere suivante :

-Dans la plage (E18:N21) , les colonnes dont les quatre valeurs sont inférieures a (7)
-Dans la plage (O18:X21) ,parmi les colonnes qui restent ,les quatre valeurs qui sont inférieures a (13)
-Dans la plage (Y18:AR21) , les colonnes qui restent et qui comportent au moins une valeur supérieure a (12)

Merci
 

Pièces jointes

Re : Répartir des valeurs

Bonjour kabale53,

Voyez le fichier joint avec cette macro :

Code:
Sub Répartition()
Dim P As Range, n&, R1 As Range, R2 As Range, R3 As Range
Dim c1%, c2%, c3%
Set P = [E9:AR12] 'plage à étudier
n = P.Rows.Count
Set R1 = [AU9:BD12] 'plages des résultats
Set R2 = [BE9:BN12]
Set R3 = [BO9:CH12]
Union(R1, R2, R3).ClearContents 'RAZ
For Each P In P.Columns
  If Application.Count(P) Then 'si la colonne n'est pas vide
    If Application.CountIf(P, "<7") = n Then
      c1 = c1 + 1
      R1.Columns(c1) = P.Value
    ElseIf Application.CountIf(P, "<13") = n Then
      c2 = c2 + 1
      R2.Columns(c2) = P.Value
    Else
      c3 = c3 + 1
      R3.Columns(c3) = P.Value
    End If
  End If
Next
End Sub
A+
 

Pièces jointes

Re : Répartir des valeurs

Re,

Variante (2), les cellules vides étant considérées comme contenant la valeur zéro (voir cellule E9) :

Code:
Sub Répartition()
Dim P As Range, R1 As Range, R2 As Range, R3 As Range
Dim c1%, c2%, c3%
Set P = [E9:AR12] 'plage à étudier
Set R1 = [AU9:BD12] 'plages des résultats
Set R2 = [BE9:BN12]
Set R3 = [BO9:CH12]
Union(R1, R2, R3).ClearContents 'RAZ
For Each P In P.Columns
  If Application.CountIf(P, ">12") Then
    c3 = c3 + 1
    R3.Columns(c3) = P.Value
  ElseIf Application.CountIf(P, ">6") Then
    c2 = c2 + 1
    R2.Columns(c2) = P.Value
  ElseIf Application.Count(P) Then
    c1 = c1 + 1
    R1.Columns(c1) = P.Value
  End If
Next
End Sub
A+
 

Pièces jointes

- 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

Réponses
3
Affichages
288
Réponses
1
Affichages
134
Retour