Pb range and Application.WorksheetFunction

gustwo

XLDnaute Nouveau
Bonjour a tous

Je cherche un pro de vba pour m aider j ai quelques problemes avec ma macro : un pour set la range et un pour appliquer la formule sumproduct, quelqu un pourrait regarder la macro est me dire ce qui ne va pas.


Sub RemplirTab()

Dim I As Integer
Dim NbClients As Double
NbClients = ThisWorkbook.Worksheets("Summary").Range("b65536").End(xlUp).Row
NbClients = NbClients - 6
Dim X As Integer

Dim Range1 As Range
Dim Range2 As Range

ThisWorkbook.Worksheets("Summary").Range("C6").Select


Set Range1 = ThisWorkbook.Worksheets("Summary").Range(Cells("C6"), Cells(NbClients, 0))
Set Range2 = ThisWorkbook.Worksheets("Summary").Range(Cells("F6"), Cells(NbClients, 0))

If ThisWorkbook.Worksheets("Analysis").Range("b6").Value = "belu" Then
ThisWorkbook.Worksheets("Analysis").Range("c6").Value = Application.WorksheetFunction.SumProduct(range1""Belu"",range2""V"")
End If

If ThisWorkbook.Worksheets("Analysis").Range("b6").Value = "Fina" Then
ThisWorkbook.Worksheets("Analysis").Range("c6").Value = Application.WorksheetFunction.SumProduct(range1""Fina"",range2""L"")
End If

End Sub

Merci d avance

Thomas
 
C

Compte Supprimé 979

Guest
Re : Pb range and Application.WorksheetFunction

Salut Gustwo

Sans fichier ça va être difficile car on ne sait pas trop ce que tu veux faire !?
En tout cas si tu définit une plage par Set
Tu ne peux en aucun cas concaténer un objet avec une valeur
Code:
range1""B elu""
est archi faux

A+
 
G

Guest

Guest
Re : Pb range and Application.WorksheetFunction

bonjour,
Re Bruno:D

Il y a aussi deux fautes de syntaxe ici :
Code:
Range(Cells("C6 "), Cells(NbClients, 0))
Sur deux lignes= 4 erreurs

Cells("C6") -> soit Range("C6") soit Cells(6,3)
Cells(NbClients,0) -> la colonne 0 n'existe pas

Par contre Range("C6").Cells(NbClient,0) fera référence à la colonne B6 décaler de NbClients lignes


Code:
Range(Cells(6,3),Cells(Nbclients,3)
ou
Code:
Range(Range("C6"),Cells(NbClients,3))
Ou
Code:
Range("C6").Resize(NbClients)
Ou
Code:
Range(Range("C6"),Range("C" & NbClients))

Et j'en passe

A+
 

gustwo

XLDnaute Nouveau
Re : Pb range and Application.WorksheetFunction

Merci pour toutes ces reponses

Je suis desole je suis encore un debutant avec VBA et ca la premiere fois que je voulais selectionner une Range. J ai suivi vos conseils cependant j ai encore un probleme:
Sub RemplirTab()

Dim I As Integer
Dim NbClients As Double
NbClients = ThisWorkbook.Worksheets("Summary").Range("b65536").End(xlUp).Row
NbClients = NbClients - 6
Dim X As Integer

Dim Range1 As Range
Dim Range2 As Range


Set Range1 = ThisWorkbook.Worksheets("Summary").Range(Cells(6, 3), Cells(NbClients, 3))
Set Range2 = ThisWorkbook.Worksheets("Summary").Range(Cells(6, 6), Cells(NbClients, 6))

Je ne comprends pas j ai le message d erreur suivant: "Application defined or object defined error"
If ThisWorkbook.Worksheets("Analysis").Cells(6, 2).Value = "Belu" Then
ThisWorkbook.Worksheets("Analysis").Range("c6").Value = Application.WorksheetFunction.SumProduct(Range1, "Belu")
End If

If ThisWorkbook.Worksheets("Analysis").Range("b6").Value = "Fina" Then
ThisWorkbook.Worksheets("Analysis").Range("c6").Value = Application.WorksheetFunction.SumProduct(Range1, "Fina")
End If

End Sub
 
G

Guest

Guest
Re : Pb range and Application.WorksheetFunction

Re,

Si cela ne va pas il faudra revenir avec un classeur et la macro.
Vérifier que nbClients soit supérieur à 0
Code:
With ThisWorkbook.Sheets("Summary")
        Set Range1 = .Range(.Cells(6, 3), .Cells(nbclients, 3))
        Set Range2 = .Range(.Cells(6, 6), .Cells(nbclients, 6))
    End With

A+
 

gustwo

XLDnaute Nouveau
Re : Pb range and Application.WorksheetFunction

c est bon j ai modifie le code quelq'un a une solution pour le sumproduct:

=SUMPRODUCT((Summary!B6:B65536="Belu")*(Summary!J6 :J65536="V"))

Comment coder cette formule sous VBA sachant que range1 va etre egal à Summary!B6:B65536 et range2 = Summary!J6 :J65536.
Je veux que le resultat soit ecrit dans une autre feuille regarder ce que j'ai fait:
ThisWorkbook.Worksheets("Analysis").Range("c6").Value = Application.WorksheetFunction.SumProduct(Range1 = "Belu" * Range1 = "V") , je ne sais pas comment la partie entre parenthese fonctionne. J'ai essayé de chercher sur internet mais en vain.
merci pour votre aide
 
G

Guest

Guest
Re : Pb range and Application.WorksheetFunction

Re,

Extrait de la charte du forum:

1 - La Politesse !

Quand vous posez votre question car finalement après des heures d'énervement qui n'ont abouti à rien, vous devez vous résoudre à faire une demande d'aide publique.... N'oubliez pas que votre demande sera lue et relue par des centaines de gens. Certains pourront vous répondre, d'autres ne feront que la lire. Dans tous les cas, les contributeurs de ce Forum seront en face de votre problème et surtout de la manière dont vous vous adressez à eux. Un post qui commence par 'Je veux'... ou même 'Je voudrais' risque simplement d'aboutir à ce que le lecteur passe à un sujet suivant, sans même vous lire. Idem quand à la fin de votre exposé du problème, s'il n'y a même pas une formule de politesse, cela laisse présager que votre demande, une fois résolue, ne sera même pas suivie d'un simple 'Merci'


A+
 

gustwo

XLDnaute Nouveau
Re : Pb range and Application.WorksheetFunction

Excusez moi, je vous avouerais que j ai passé quelques heures sur ce probleme et que cette macro commence fortement a m'agacer.
Il est vrai que je ne vous ai pas remercier et je m en excuse. Merci pour tous ces conseils et votre aide qui m est tres precieuse.
 
G

Guest

Guest
Re : Pb range and Application.WorksheetFunction

Re,

Excusez moi, je vous avouerais que j ai passé quelques heures sur ce probleme et que cette macro commence fortement a m'agacer.

Moi ce qui m'agace c'est de voir des post sans aucun signe d'amabilité.

Ceci dit pour ton problème: Ecrit la formule sommeProd dans une cellule, laisse la sélection sur la cellule
Dans l'éditeur VBE affiche la fenêtre Exécution (CTRL+G)
Dans cette fenêtre tape : "?ActiveCell.formulaR1C1" sans les guillemets mais avec le ?
Puis valide.
Cela te donneras le modèle à suivre pour l'écrire en VBA.

A+
 

Statistiques des forums

Discussions
312 336
Messages
2 087 388
Membres
103 534
dernier inscrit
Kalamymustapha