Calculer le cumule ( en VBA)

Ilino

XLDnaute Barbatruc
Bonsoir Forum,
J’ai un tableau ( de n ligne)qui est alimenté par un USF, Mon soucis est :
Exemple je saisie le Nom A (dernière ligne dans ce cas) je souhaiterai avoir un cumule dans les colonnes J&K pour chaque cas ( Avec Solde et Sans Solde) ci-joint mon fichier avec exemple
Grazie
 

Pièces jointes

  • ILINO SANS&AVEC SOLDE.xlsx
    11.7 KB · Affichages: 83

job75

XLDnaute Barbatruc
Re : Calculer le cumule ( en VBA)

Re,

Finalement la méthode Find est vraiment très lente.

Avec des tableaux VBA c'est beaucoup plus rapide.

Nouvelle fonction :
Code:
Option Compare Text 'la casse est ignorée

Function RECHVAL(v$, tablo1, tablo2)
'tablo1 => 1 colonne, tablo2 => 2 colonnes
Dim i&, t(1 To 2)
If tablo1.Count > 1 Then
  tablo1 = tablo1 'matrice
  tablo2 = tablo2 'matrice
  For i = UBound(tablo1) To 1 Step -1
    If tablo1(i, 1) = v Then
      t(1) = tablo2(i, 1): t(2) = tablo2(i, 2)
      RECHVAL = t
      Exit Function
    End If
  Next
End If
End Function
Nouvelle formule en G2:H2 à valider matriciellement et tirer vers le bas :
Code:
=RECHVAL($A2;$A$1:$A1;$G$1:$H1)+($E2=$G$1:$H$1)/2^($F2<>"J")
Avec modif sur ligne 2, la durée du calcul se réduit à 4,3 secondes :)

Fichier (3).

Edit : testé sous Win 7 - Excel 2010 => 2,7 secondes.

A+
 

Pièces jointes

  • CP ILINO FORUM 2013 04 07(3).zip
    177.7 KB · Affichages: 71
Dernière édition:

job75

XLDnaute Barbatruc
Re : Calculer le cumule ( en VBA)

Re,

Ah j'oubliais qu'il peut y avoir des homonymes.

Cette fonction teste donc le nom (v1) et le prénom (v2) :

Code:
Option Compare Text 'la casse est ignorée

Function RECHVAL(v1$, v2$, tablo1, tablo2)
'tablo1 => 2 colonne, tablo2 => 2 colonnes
Dim i&, t(1 To 2)
tablo1 = tablo1 'matrice
tablo2 = tablo2 'matrice
For i = UBound(tablo1) To 1 Step -1
  If tablo1(i, 1) = v1 Then
    If tablo1(i, 2) = v2 Then
      t(1) = tablo2(i, 1): t(2) = tablo2(i, 2)
      RECHVAL = t
      Exit Function
    End If
  End If
Next
End Function
Nouvelle formule matricielle sur G2:H2 :

Code:
=RECHVAL($A2;$B2;$A$1:$B1;$G$1:$H1)+($E2=$G$1:$H$1)/2^($F2<>"J")
Fichier (4).

La durée du calcul (modif ligne 2) passe à 7,5 secondes.

Edit : testé sous Win 7 - Excel 2010 => 3,3 secondes.

A+
 

Pièces jointes

  • CP ILINO FORUM 2013 04 07(4).zip
    182.9 KB · Affichages: 47
Dernière édition:

Ilino

XLDnaute Barbatruc
Re : Calculer le cumule ( en VBA)

Re
ça fonctionne parfaitement mais elle est tres lente pour un tableau de 2013 ligne et pour un USF pour cette raison j'ai souhaité une reponse en VBA.
Merci encore
NB: ou bien convertir cette dernière en VBA:confused:
Bonjour Legols, Bonjour Maitre, Bonjour Forum
Le Problème de lenteur dans la proposition de Legols ( on utilisant mon USF) est réglé de cette façon
Code:
=SI($B3<>"";RECHVAL($B$3:$B3;$J$3:$K3;COLONNES($J3:J3))+($G3=J$2)/2^($H3<>"La Journée");"")
j'ai ajouté la condition si le nom n'est pas vide
Merci pour tout le monde
NB: réglé en mode formule seulement:eek:
 

Ilino

XLDnaute Barbatruc
Re : Calculer le cumule ( en VBA)

Bonsoir Forum,
J’ai un tableau ( de n ligne)qui est alimenté par un USF, Mon soucis est :
Exemple je saisie le Nom A (dernière ligne dans ce cas) je souhaiterai avoir un cumule dans les colonnes J&K pour chaque cas ( Avec Solde et Sans Solde) ci-joint mon fichier avec exemple
Grazie

Bonjour Forum
je vous sollicite a m'aider pour résoudre mon souci suivant :
je souhaiterai cette fois conditionner cette formule par les deux cellule B&D (NOM&PRENOM) et après afficher le cumule .
Code:
=SI($B2<>"";RECHVAL($B$2:$B2;$J$2:$K2;COLONNES($J2:J2))+($G2=J$1)/2^($H2<>"J");0)
GRAZIE
 

Pièces jointes

  • ILINO CP 2013 04 23 V1.xlsm
    17.9 KB · Affichages: 41

sourcier08

XLDnaute Occasionnel
Re : Calculer le cumule ( en VBA)

Salut à tous!

Voici comment intégrer la colonne D avec :

=SI(ET($B2<>"";$D2<>"");RECHVAL($B$2:$B2;$J$2:$K2;COLONNES($J2:J2))+($G2=J$1)/2^($H2<>"J");0)

Par contre, la colonne D ne représente pas les prénoms mais la fonction.
Si tu t'es trompé dans ta demande, voici la correction à la formule :

=SI(ET($B2<>"";$C2<>"");RECHVAL($B$2:$B2;$J$2:$K2;COLONNES($J2:J2))+($G2=J$1)/2^($H2<>"J");0)
 

Ilino

XLDnaute Barbatruc
Re : Calculer le cumule ( en VBA)

Bonjour SOURCIER
oui c'est une erreur je corrige C et non pas D, merci pour le rappel et pour la réponse
mais mon souci est chercher le meme nom et meme prenom et calculer le cumule parceque dans mon fichier je peux avoir le meme NOM avec différent PRENOM
A+
 

job75

XLDnaute Barbatruc
Re : Calculer le cumule ( en VBA)

Bonjour Ilino, sourcier08,

Le problème Ilino c'est que tu n'étudies pas correctement les solutions qu'on te donne :mad:

En effet j'ai réglé le problème des homonymes au post #19 (Nom + Prénom).

Ci-joint ton fichier du post #23 dans lequel j'ai placé la bonne macro.

La fonction RECHVAL renvoie une matrice de 2 valeurs.

Donc note bien qu'il faut entrer la formule sur la plage J2:K2 et valider matriciellement.

A+
 

Pièces jointes

  • ILINO CP 2013 04 23(1).xls
    49 KB · Affichages: 33
Dernière édition:

Discussions similaires

Réponses
18
Affichages
622

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin