VBA je suis BLOQUER :'(

Résolu
Katarinas -  
 Katarinas -
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
A voir également:

24 réponses

katarinas
 
'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
''Set Plage = sclient.FindNext(Plage)
'Plage.Select
'Loop
'End Sub

euh ... mieu pas infini ?
et pour le +1 colonne? :s
0
ShaBoo
 
lol ...

Je pense que ton Objet "Plage" doit avoir des propriétes pour te deplacer sur la colonne +1 lorsque que tu as trouvé la plage ...

;p
0
Katarinas
 
Bonjour,

Voila ou jen suis:

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 Plage Is Nothing Then
Exit Do
Else
Set Plage = sClient.FindNext(Plage)
Plage.Select
Loop
Range("D17") = Range("Feuil3!K(Plage)")
End Sub

Mais sa bug grave !!!!
0
ShaBoo
 
Comme je te l'ai dit précédemment, je ne suis pas une bete de vba.

Voici une piste.

Range("D4") = fReturnConditionForClient(Range("A1").Text)

La fonction serait de ce style

Function fReturnConditionForClient(sClient As String) As String

Dim oCell As Range
Dim iCpt As Variant

iCpt = 0

'liste des clients
Range("Feuil1!A1:A500").Select

For Each oCell In Selection
iCpt = iCpt + 1
If (oCell.Value = sClient) Then
Exit For
End If
Next

Return Range("Feuil1!B"&iCpt).text

EndFunction


(au passage je remercie BoOst pour son aide)
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
Bonjour,

Tu sais, le plus simple pour démarrer en VBA est d'enregistrer une macro et d'adapter le bout de code ensuite.
Pour avoir les outils sous la main: menu "Affichage/Barre d'outils" où tu coches "Visual Basic".
Le rond rouge lance l'enregistrement de la macro.
Une petite fenetre de contrôle s'ouvre où tu peux arreter l'enregistrement et choisir entre references absolues ou relatives (ne la ferme jamais, elle n'est pas évidente à faire revenir).

Là toutes tes actions vont etre enregistrées.
Par exemple dans ta feuille client fais "edition/rechercher" paul (nom du client)
Arreter l'enregistrement de la macro.
et tu obtiens :

Range("A1").Select
Cells.Find(What:="paul", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate

A toi de modifier/supprimer les parametre selon tes besoins.
Par exemple activer la cellule (.activate à la fin) ne t'interesse pas, par contre .offset(ligne,colonne) te permet de decaler ta reference pour récuperer une valeur avec le .value

Dim nomClient As String
nomClient = "paul"
conditionPaiement = Cells.Find(What:=nomClient, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Offset(0, 1).Value
MsgBox (nomClient & ": " & conditionPaiement)

Les erreurs ne sont pas gérées, il faut que le client existe !

J'espère t'avoir mis le pied à l'étrier, à toi de t'amuser ;-)
0