Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
678 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Explications et trucs^^ [VBA]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Explications et trucs^^ [VBA]

n°1098539
atmakefka
Posté le 26-05-2005 à 18:37:08  profilanswer
 

salut, je voulais savoir a quoi sert "With" en VBA ? comment on l'utilise et pouquoi?
 
sinon, les underscore : _ servent bien a aller a la ligne ?
 
enfin, si quelqu'un pouvait me dechiffrer ceci, chaque etape, je comprends pas :(

Code :
  1. sFormula = "=SUMPRODUCT(" & _
  2. "--(B2:B" & iLastRow & ">=--""" & Format(date_debut, "yyyy/mm/dd" ) & """ )," & _
  3. "--(D2:D" & iLastRow & "<=--""" & Format(date_fin, "yyyy/mm/dd" ) & """ )," & _
  4. "--((E2:E" & iLastRow & "-C2:C" & iLastRow & " )>=--""00:01:00"" ))"
  5. .Offset(0, 6).Formula = sFormula
  6. .Offset(0, 6).NumberFormat = "#,##0"


 
merci :)


Message édité par atmakefka le 26-05-2005 à 18:38:35
mood
Publicité
Posté le 26-05-2005 à 18:37:08  profilanswer
 

n°1098562
knakes
Posté le 26-05-2005 à 18:49:47  profilanswer
 

• le With permet de faire appel a un objet sans le rappeler trop souvent. ex a la place de dire
'--
Form.Label1.Caption = ""
Form.Label2.Caption = ""
...
'On peut utiliser
With Form
   .Label1.Caption = ""
   .Label2.Caption = ""
End With
'--
 
 
• Oui
 
• Pour le reste, tu dois avoir une référence à une valeur 'iLastRow', mais la compréhension globale ...
je ne la maitrise pas. Si Alain passe par là ...  [:anathema]


Message édité par knakes le 26-05-2005 à 18:52:36

---------------
now : do nothing
n°1098586
atmakefka
Posté le 26-05-2005 à 18:59:03  profilanswer
 

d'accord merci, je vais attendre Alain :)
enfin, esperer qu'il reponde ^_^

n°1098988
AlainTech
Pas trouvé? Cherche encore!
Posté le 27-05-2005 à 05:14:35  profilanswer
 

J'y jette un oeil dès que je suis au boulot.
 
En attendant, il faudrait que tu vérifies tes messages privés de temps en temps...
 
Tu en as un qui est non lu depuis le 17/5...
Il n'est sûrement plus d'actualité mais bon...


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1098989
atmakefka
Posté le 27-05-2005 à 06:20:42  profilanswer
 

je n'avais pas vu pour le PM :( désolé

n°1099017
AlainTech
Pas trouvé? Cherche encore!
Posté le 27-05-2005 à 08:52:08  profilanswer
 

Il s'agit d'une fonction qui écrit une formule dans une cellule.
 
Avec les paramètres suivants:

iLastRow = 25
date_debut = CDate("01/01/2005" )
date_fin = CDate("31/12/2005" )


La formule fabriquée donne:

=SUMPRODUCT(--(B2:B25>=--"2005/01/01" );--(D2:D25<=--"2005/12/31" );--((E2:E25-C2:C25)>=--"00:01:00" ))


Evidemment, le programme ne tient pas compte de la langue d'interface de Excel et génère la formule en syntaxe anglaise.
 
Voici la définition de SUMPRODUCT:

Multiplies corresponding components in the given arrays, and returns the sum of those products.
 
Syntax
 
SUMPRODUCT(array1,array2,array3, ...)
 
Array1, array2, array3, ...   are 2 to 30 arrays whose components you want to multiply and then add.
 
· The array arguments must have the same dimensions. If they do not, SUMPRODUCT returns the #VALUE! error value.
· SUMPRODUCT treats array entries that are not numeric as if they were zeros.
 
The following formula multiplies all the components of the two arrays on the preceding worksheet and then adds the products ¾ that is, 3*2 + 4*7 + 8*6 + 6*7 + 1*5 + 9*3.
 
SUMPRODUCT({3,4;8,6;1,9}, {2,7;6,7;5,3}) equals 156
 
Remark
 
The preceding example returns the same result as the formula SUM(A1:B3*D1:E3) entered as an array. Using arrays provides a more general solution for doing operations similar to SUMPRODUCT. For example, you can calculate the sum of the squares of the elements in A1:B3 by using the formula SUM(A1:B3^2) entered as an array.


 
Ce qui me tracasse, ce sont les doubles tirets (moins).
Je n'en vois pas la raison.
En tout cas, Excel anglais accepte la formule sans broncher.
 
je continue à chercher car cette formule me titille.
Il semble fabriquer une array sur base de paramètres conditionnels.
J'ai encore jamais vu.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1099046
atmakefka
Posté le 27-05-2005 à 09:25:17  profilanswer
 

merci ! :)

n°1099062
AlainTech
Pas trouvé? Cherche encore!
Posté le 27-05-2005 à 09:36:18  profilanswer
 

Trouvé ça (merci Google)

Citation :

the -- converts the boolean value returned by the comparison to 0/1
(FALSE = 0; TRUE = 1)
It is a double minus


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1099139
AlainTech
Pas trouvé? Cherche encore!
Posté le 27-05-2005 à 10:17:14  profilanswer
 

Suis pas certain mais je pense qu'il y a des moins moins en trop.
Ceux qui sont devant les dates.
Si tu as une possiblité de tester la formule sur des data réelles, ça m'intéresserait de la comprendre.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
n°1099145
AlainTech
Pas trouvé? Cherche encore!
Posté le 27-05-2005 à 10:21:38  profilanswer
 

Une meilleure explication ici:
http://www.mrexcel.com/board2/view [...] ght=coerce

Citation :

=SUMPRODUCT((LEFT(A2:A4,3)=C2))  
 
evaluates to {TRUE;TRUE;FALSE}  
 
...which is interesting, but useless for sumproduct, as sumproduct can only sum numeric values. so, we need to coerce the logicals to numerics. the basic method to do this is to perform a mathematical operation on the array, so any of:  
 
=SUMPRODUCT(--(LEFT(A2:A4,3)=C2))  
=SUMPRODUCT((LEFT(A2:A4,3)=C2)*1)  
=SUMPRODUCT((LEFT(A2:A4,3)=C2)+0)  
 
would do. the -- option is preferred by some as it is more efficient (albeit marginally so). after the coersion, the array is:  
 
{1;1;0}  
 
...which, as a numeric array, can be fed to the sumproduct to give the answer.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
mood
Publicité
Posté le 27-05-2005 à 10:21:38  profilanswer
 

n°1099963
atmakefka
Posté le 27-05-2005 à 18:31:23  profilanswer
 

merci :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Explications et trucs^^ [VBA]

 

Sujets relatifs
[VBA] Outlook: pieces jointes partiellement sauvegardees[VBA Excel macro]réutilisation de variable + comparaisons auto
problème VBA Access : "Procédure trop grande"Comparaison de dates sous VBA
[Excel VBA] Groupe de contrôle sans nom (?!)scroll et VBA
Erreur VBA listbox et suppression de cellulesAffichage Clipboard à partir de VBA sous access
[VBA pour Excel] Nom de userformRécuperer les paramètres d'une fonction VBA
Plus de sujets relatifs à : Explications et trucs^^ [VBA]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR