petite question pour programmer sous VB

petite question pour programmer sous VB - VB/VBA/VBS - Programmation

Marsh Posté le 28-02-2006 à 17:36:38    

comment fait on sous VB pour appeler toutes les cellules se référant au même nom
si jai 100 cellules dont plusieurs dont le nom est paris et que je veux selectionner le chiffre associé à toutes les cellules dont le nom est paris
ex
paris         2
lyon          1
brest         6
paris          4
lyon           4
 
et je voudrais une commande qui fasse paris=6 et lyon=5???
Si qqun a une idée ca m'aiderait beaucoup!!!
merci davance

Reply

Marsh Posté le 28-02-2006 à 17:36:38   

Reply

Marsh Posté le 28-02-2006 à 21:17:50    

Salut,
 
Je ne suis pas sûr d'avoir tout compris, mais si tu veux donner un code numérique à chaque ville, tu peux faire ceci :


Sub Code_Ville()
Dim CL As Range
For Each CL In ActiveSheet.Range("A2:A100" )
  Select Case CL
    Case "paris": CL.Offset(0, 1) = 6
    Case "lyon": CL.Offset(0, 1) = 5
    Case "brest": CL.Offset(0, 1) = 4
    'etc...
    Case Else
  End Select
Next
End Sub


Dans cet exemple, la macro donne un code en colonne B selon la ville trouvée en colonne A.  
C'est bien ce que tu veux ?
 
A+
Horatio

Reply

Marsh Posté le 01-03-2006 à 10:25:29    

Lord Nelson a écrit :

Salut,
 
Je ne suis pas sûr d'avoir tout compris, mais si tu veux donner un code numérique à chaque ville, tu peux faire ceci :


Sub Code_Ville()
Dim CL As Range
For Each CL In ActiveSheet.Range("A2:A100" )
  Select Case CL
    Case "paris": CL.Offset(0, 1) = 6
    Case "lyon": CL.Offset(0, 1) = 5
    Case "brest": CL.Offset(0, 1) = 4
    'etc...
    Case Else
  End Select
Next
End Sub


Dans cet exemple, la macro donne un code en colonne B selon la ville trouvée en colonne A.  
C'est bien ce que tu veux ?
 
A+
Horatio


 
ouai sauf que je ne saurais pas à l'avance quel sera le nom des villes il faudrait que le pgme puisse reconnaitre les cases avec le même nom de ville? C'est possible??

Reply

Marsh Posté le 01-03-2006 à 11:15:21    

bonjour,
ça serait bien que tu fasses un effort pour expliquer ton problème.  
Un problème bien posé est un problème à moitié résolu.
Et si en plus il y a un petit classeur joint alors là c'est le top.
Un problème vaguement posé à peu de chance d'obtenir une solution.
Relis-toi  :heink:  et met toi un peu à notre place...  :pfff:  
 
Sinon j'ai une commande qui fait PARIS-LYON en 2h30 environ :  
=TGV(SNCF)
 
A+


---------------
roger
Reply

Marsh Posté le 01-03-2006 à 11:45:54    

mais tu sais galopin01 si tu comprends pas tu reponds et basta!!!

Reply

Marsh Posté le 01-03-2006 à 11:46:26    

mais tu sais galopin01 si tu comprends pas tu reponds pas et basta!!!

Reply

Marsh Posté le 01-03-2006 à 11:56:04    

Salut Galopin et Lala,
 
D'accord avec toi Galopin, il faut que Lala fasse un effort d'explication :
 
Veux-tu compter tous les "paris" ou bien leur affecter un code ?
 
A+
Horatio

Reply

Marsh Posté le 01-03-2006 à 13:13:56    

Salut,
Bon alors désolé d'être aussi peu clair jvais essayer d'être plus clair!
En fait je voudrais que mon programme puisse reconnaitre toute les cellules contenant le même mot jai pris paris, lyon... pour exemple mais les utilisateurs du programme pourront entrer le nom qu'ils veulent pour caractériser une cellule, le but ce serait que mon pgme puisse selectionner toutes les cellules contenant le même mot et ce quelque soit les mots utilisés.En gros il faut que mon pgme puisse reconnaitre tous les cellules contenant les mêmes caractères.
Est ce possible?
Merci! :)  

Reply

Marsh Posté le 01-03-2006 à 14:02:10    

bonjour,
tu peux partir de là :

Code :
  1. Sub test()
  2. Dim o, Tablo As New Collection, R$, S$, Z$
  3. Z = InputBox("Entrez la chaine de recherche" )
  4. For Each o In Selection
  5. S = o.Value
  6. R = o.Address
  7. If InStr(1, S, Z) > 0 Then Tablo.Add R
  8. Next
  9. For i = 1 To Tablo.Count
  10. MsgBox Tablo(i)
  11. MsgBox Range(Tablo(i)).Offset(0, 1)
  12. Next
  13. End Sub

Après faut voir...
Faire une sélection d'après des Address en Array, ç'est sans doute possible mais c'est plus cher !
A+


---------------
roger
Reply

Marsh Posté le 01-03-2006 à 14:05:46    

Alors voici une procédure qui te permettra de lister les mots uniques dans ta liste :
 


Sub Liste_Villes()
Dim CL As Range
Dim Temp As String, I As Long
I = 2
For Each CL In ActiveSheet.Range("A2:A100" )
  If CL = "" Then Exit For
  If InStr(UCase(Temp), UCase(CL)) = 0 Then
    Temp = Temp & "@" & CL
  End If
Next
Villes = Split(Temp, "@" )
For I = 1 To UBound(Villes)
  ActiveSheet.Cells(I + 1, 2) = Villes(I)
Next
End Sub


 
Dans cet exemple la liste "Villes" est un tableau qui contient tous les noms des villes sans doublons. Cette liste apparaît en colonne B mais tu peux également t'en servir pour créer une liste déroulante.
 
A+
Horatio
 

Reply

Marsh Posté le 01-03-2006 à 14:05:46   

Reply

Marsh Posté le 01-03-2006 à 14:40:06    

ok je vais essayer, merci beaucoup  
 ;)

Reply

Marsh Posté le 02-03-2006 à 11:14:06    

Salut,  
 
voici ce que je te propose.
 
On va placer les valeurs dans un tableau à deux dimensions (Ville, somme des valeurs)
ensuite, on colle le tableau dans une feuille.
 
Ca donne ça :
 
Sub Liste_Villes()
Dim CL As Range
Dim mytab()
Dim i As Integer
Dim fin As Integer
Dim found As Boolean  'variable de control des entrées du tableau
ReDim Preserve mytab(1 To 2, 1 To 1) ' tableau a 2 dimension ( ville, somme )
Feuil4.Activate
fin = Range("a65536" ).End(xlUp).Row  'dernière ligne utilisée
 
For Each CL In ActiveSheet.Range("A1:A" & fin) ' pour chaque cellule
    For j = 1 To UBound(mytab, 2)   'pour chaque entrée du tableau (villes)
        found = False ' on mets faux pour dire que CL n'est pas dans le tableau
        If mytab(1, j) = CL.Value Then ' si on trouve CL dans le tableau
            mytab(2, j) = mytab(2, j) + CL.Offset(0, 1).Value ' on rajoute la valeur à celle existante
            found = True 'on dit qu'on a trouver
            Exit For 'on sort de la boucle
        End If
    Next
    If Not found Then 'si on a pas trouver CL dans le tableau
    i = i + 1   'on incrémente le conteur de ville
    ReDim Preserve mytab(1 To 2, 1 To i) 'on rajoute un ligne au tableau
    mytab(1, i) = CL.Value  ' on colle le nom de la ville dans la première colonne
    mytab(2, i) = CL.Offset(0, 1).Value ' et la valeur correspondante dans la deuxième
    End If
Next ' on passe à la ligne suivante
Sheets("Feuil1" ).Activate
Sheets("Feuil1" ).Range("a1:b" & i) = Application.WorksheetFunction.Transpose(mytab) ' on colle Mytab dans la feuille Feuil1
Sheets("Feuil1" ).Range("a1:b" & i).Sort Key1:=Range("A1" ), Order1:=xlAscending ' on tri notre tableau
End Sub
 
 
Voilà, à toi de changer les noms de feuille pour que ça tourne chez toi.
 
+++++

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed