VBA je suis BLOQUER :'(
Résolu
Katarinas
-
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
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:
- VBA je suis BLOQUER :'(
- Bloquer pub youtube - Accueil - Streaming
- Comment savoir si je suis bloqué sur messenger - Guide
- Bloquer sur messenger - Guide
- Bloquer cellule excel - Guide
- Bloquer un contact sur whatsapp - Guide
24 réponses
'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
'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
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 !!!!
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 !!!!
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)
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)
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 ;-)
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 ;-)
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