Rechercher : dans
Par :

VBA je suis BLOQUER :'(

Dernière réponse le 13 sep 2007 à 11:28:14 Katarinas, le 11 sep 2007 à 16:45:50 
 Signaler ce message aux modérateurs

Bonjour

Voila maintenant 6h que je cherche une solution et je me decide enfin a demander de l'aide.
Tous d'abords je suis un tout nouvequ dans le monde du Vba... Pardon d'avance de mon ignorance ou des questions bete que je pourais poser.

Je vous explique mon probleme:

Je suis sous exel j'ai programmer un ComboBox afin de repertorier une liste de client (A, B, C, ...) une fois le client choisis, j'aimerai qu'en fonction du choix je puisse mettre dans une autre cellule une texte associe
ex:

Client A paiement sous 10 jours
Client B paiement sous 30 jours
Client C paiement sous 15 jours
...

If Range("A1") = "Client A" then
Range ("D4") = "paiement sous 10 jours"
End If

Ceci etai le premier probleme.
Voici le second:

Suite a un choix dans une ComboBox encore une fois il faudrait y associer une formule
ex:

Cuivre dia 8mm lg 1000m POIDS?
Alu
...


If Range("A1") = Cuivre then
Range("POIDS") = aire du cercle par la lg .... x densité !!! (ya que sa qui change) / ......


j'espere que je me suis fais comprendre.

Merci d'avance pour vos reponses

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « VBA je suis BLOQUER :'( » dans :
Comment savoir si on est bloqué sur MSN VoirSavoir si on vous a bloqué Savoir si on vous a supprimé Savoir si on vous a bloqué et supprimé Avec aMSN ou GAIM Avec un site web Méthode à l'ancienne Le logiciel Windows Live Messenger propose trois possibilités pour la gestion des...
Blocage du PC / Ordinateur se bloque / Système gelé (freezes) VoirPour régler ce problème, il faut d’abord connaitre les raisons qui font qu'une machine peut se bloquer. Le terme "freeze" est parfois utilisé pour indiquer que le système est "gelé". Si les solutions ci-dessous ne sont pas suffisantes, une...

1

Posotaz, le 11 sep 2007 à 22:09:06
  • +1

Bonsoir Katarinas,


Pour le premier problème c'est parce que tu compares l'objet cellule avec le texte "Client A", ce qui fait qu'il n'entre jamais dans la condition. Tu devrais invoquer le texte de l'objet cellule par sa propriété Text :

 If Range("A1").Text = "Client A" Then
        Range("D4") = "paiement sous 10 jours"
 End If

L'autre j'ai pas compris mais il souffre sûrement aussi du même problème ^^

Répondre à Posotaz

2

Posotaz, le 11 sep 2007 à 22:17:13

Sinon hein, de manière générale, écrire une formule dans une cellule par programmation se fait de la même façon que directement dans le tableur avec Range("la cellule") = "=A9*A11*A10" admettant que A9, A11 et A10 représentent respectivement l'aire, la longueur (ou largeur) et la densité...

Et comme tu débutes en VB(A) je te conseille de commencer tous tes scripts par l'instruction

Option Explicit
qui force à déclarer les variables. Ainsi tu as moins de chances de faire une erreur de frappe, l'interpréteur te signalera une erreur là où tu utilises une variable que tu n'as pas déclarée.

Répondre à Posotaz

3

katarinas, le 12 sep 2007 à 09:18:07

Merci bcp Posotaz
tu m'aide beaucoup sur le point du : .text que je n'avais pas vu

Maintenant dans le meme principe je voudrais:

If Range("A1").Text = "Client A" Or "Client Z" Or "Client DE" ... Then
Range("D4") = "paiement sous 10 jours"
End If

Helas cela ne fonctionne pas

Répondre à katarinas

4

katarinas, le 12 sep 2007 à 10:45:01

Me revoila en pleine recherche :)

If Range("A1").Text = "Client A" Then
Range("D4") = "paiement sous 10 jours"
End If
If Range("A1").Text = "Client Z" Then
Range("D4") = "paiement sous 10 jours"
End If

Jusque la sa marche mais j'ai une liste de 500 Client y aurait il quelque chose de plus simple?

Merci d'avance

Répondre à katarinas

5

ShaBoo, le 12 sep 2007 à 11:40:31

Bonjour,

Tu peux essayer d'automatiser ta recherche de condition en passant par une fonction :

ex :

dans ton code générale tu aurais ceci :

Range("D4") = fReturnCondition (Range("D1").Text)

et la fonction aurait cette tete :

Function fReturnCondition (sClient As String) As String

Dim sCondition As String

Evaluate sClient

When "Client A"
sCondition = "paiement sous 10 jours"

When "Client B"
sCondition = "paiement sous 20 jours"

When "Client C"
sCondition = "paiement sous 10 jours"

.
.
.
.

When "Client Z"
sCondition = "paiement sous 10 jours"

Else
sCondition = "Client inexistant"

EndEvaluate

Return sCondition

EndFunction

Répondre à ShaBoo

6

katarinas, le 12 sep 2007 à 12:05:14

Sa m'eleve deja beaucoup de ligne je te remercie.
Helas il me reste tou de meme 500 clientS a taper
Existe il une limite de taille (je m'explique):

If Range("A1").Text = "Client A" Or Range("A1").Text= "Client Z" Or Range("A1").Text ="Client DE" ... Then
Range("D4") = "paiement sous 10 jours"
End If

j'ai vu que cela marchait pour 10 x Or mais puis je mettre les 500 ?

Répondre à katarinas

7

katarinas, le 12 sep 2007 à 12:12:29

Ou peu etre me mettre en relation avec les données de la combobox non ?
Existe il un code pour:

Combobox ---> Rowsource Feuil1!A1:A500
et mettre en relation avec Feuil1!B1:B500
Avec A1 correspond a B1

J'espere que je me suis fais comprendre :s

Répondre à katarinas

9

ShaBoo, le 12 sep 2007 à 12:19:08

Le plus simple serait qu'a la création de ton client tu lui associe un code condition.

Lors de la creation de ta combo ce code lui serait affecté.

Il ne te suffiras plus qu'à faire une fonction qui te retourneras le libélle du code condition associé à ton Client.

Répondre à ShaBoo

8

ShaBoo, le 12 sep 2007 à 12:14:21

Sûr que tu peux le faire, mais je ne t'explique pas la lisibilté et le maintient de ton code par la suite.

Si je comprend bien tu as plusieurs Clients auquels tu veux accorder une et une seule condition.

Tu as une liste de Client dans une combobox. A partir de Quoi construis cette combo (fichier Excel, Table Clients d'une Base de donnée, ...) ?

Répondre à ShaBoo

10

katarinas, le 12 sep 2007 à 12:21:39

J'ai une liste de client sous exel en feuil3!A1:A500

En Feuil3!B1:B500 jai leurs conditions de paiement

En Feuil3!C1:C500 j'ai encore une donnee

j'ai construit la combobox sous exel afin que le choix defini par l'operateur remplisse un tableau sous la feuille 2

Répondre à katarinas

11

katarinas, le 12 sep 2007 à 13:57:29

Pas trouver de solution :'(
Je me tape les 500 a ecrire :s
Et je vous avoue... C'est long et emm....

Merci pour votre aide en tout cas

Répondre à katarinas

12

ShaBoo, le 12 sep 2007 à 14:02:53

Je viens de relire ton pb de depart et je l'associe à ton dernier post. Voilà ce que j'en ai compris :

- Dans la meme feuille excel tu as une liste de client en colonne A associé à des conditions en colonne B. La colonne A permet de construire ta ComboBox.

- Le Choix d'un client effectué dans la ComboBox doit te retourner la condition associé de la colonne B qui doit etre affiché dans une cellule spécifique.

Ai je compris ton pb ?

Répondre à ShaBoo

13

katarinas, le 12 sep 2007 à 14:16:19

Tout a fait

Répondre à katarinas

14

ShaBoo, le 12 sep 2007 à 14:33:48

Eh bien voilà ... tt les éléments sont rassemblés ...

Le choix dans la ComboBox te retourne le Client. Avec le Client retourné tu recherches la ligne correspondante dans la colonne A. Lorsque tu as la ligne correspondante tu te deplace de +1 pour etre sur la colonne B et d'avoir la condition associée pour ce Client. Il te suffit de recupérer cette valeur pour l'afficher dans la cellule spécifique ... CQFD

Répondre à ShaBoo

15

katarinas, le 12 sep 2007 à 14:38:27

CQFD Tu as trouver la reponse mais ... tu le traduit comment en language vb :s
Merci Merci Merci pour ton aide

Répondre à katarinas

16

ShaBoo, le 12 sep 2007 à 14:50:24

Aïe ...

Je ne suis pas très expert en VBA ...

Mais grosso modo cela devrait donner ceci :

- Choix dans la ComboBox du Client te retourne la valeur texte.

- Avec cette valeur texte, rechercher en colonne A de la feuille contenant la liste des Clients la ligne correspondante.

- Lorsque la ligne est trouvé, incrémenté de +1 sur la colonne pour se positionné en colonne B => correspondance avec la condition associé à ce Client.

- retourné la valeur texte de la colonne B dans la celulle spécifique.

CQFD ?

Répondre à ShaBoo

17

katarinas, le 12 sep 2007 à 15:30:33

Sa ma lair correct mais je ne sais pas le faire en vb

J'espere que quelqu'un pourra me le traduire en tout cas merci bcp ShaBoo.

Répondre à katarinas

18

ShaBoo, le 12 sep 2007 à 15:38:08

Rhooo ...

Allez ... un ch'ti t'effort ... tu as tt les éléments ...

il te suffit d'ecrire la fonction de recherche en utilisant une boucle de recherche d'un Client pour retrouver sa condition ...

(Tape F1 pour plus de renseignement ... ;p)

Répondre à ShaBoo

19

ShaBoo, le 12 sep 2007 à 16:03:18
  • +1

En pseudo code cela devrait te donner ceci :


Range("D4") = fReturnConditionForClient(ValeurChoixTexteDeLaComBoxClient)


avec

Function fReturnConditionForClient(sClient As String) As String
'sClient = ChoixValeurTexteDansComboClient

Dim sCondition

'Rechercher dans la feuille pour la colonne A (liste des Clients) l'occurence sClient
'utilisation boucle : For, While, Until ... au choix ...

'lorsque l'occurence est trouvé ;

'if sClient = Range("Feuil(n)!A(i)").text => n = numero de la feuille, i numero de la cellule

'sCondition = Range("Feuil(n)!B(i)").text
' Break

'EndIf

'Return sCondition

EndFunction

CQFD ? avec un p'tit RTFM quand meme

Répondre à ShaBoo

20

katarinas, le 12 sep 2007 à 16:42:20

Lool je ne me connecterai plus jamais avec ce pseudo quand je taurai montrer ou j'en suis ^^ :

Private Sub Recherche()

Dim sClient As String

Range("R1").Text = sClient

sClient.Find ("feuil3!J1:J500")

If sClient = Range("Feuil3!J(i)").Text Then
With 0 < i < 500
End If

End sub


laisser moi au moin une excuse:
Je me suis mis au vb depuis moin de 10 jours mais je vais y arriver ...

Répondre à katarinas

21

katarinas, le 12 sep 2007 à 16:52:15

'Sub Recherche()
'Dim Plage As Range
'Dim sClient As String
'Range("R1")=sClient
'Set Plage = sClient.Find("Feuil3!J1:J500")
'Plage.Select
'Do Until Plage Is Nothing
'If Is Nothing Then
'Exit Do
'Loop
'End Sub


Bon j'espere que je progresse :s

Répondre à katarinas

22

ShaBoo, le 12 sep 2007 à 16:58:06

Pas mal pour un debut ... tu n'es pas loin de la boucle infini ... ;p

Répondre à ShaBoo
Collection CommentÇaMarche.net