Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2012, 12h03   #1
Membre habitué
 
Avatar de fowlie
 
Étudiant
Inscription : mai 2011
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 335
Points : 146
Points : 146
Par défaut Select case sur une partie d'une chaine de caractere

Bonjour à tous,

Mon problème est le suivant:

J'ai un tableur excel avec dans une colonne une chaine de caractere de type :
"élèment>sous-élement>mon objet>ma pièce"
Et selon la valeur de "mon objet" je souhaite mettre la cellule suivante à une certaine valeur

Voici mon code cba pour le moment, mais il ne fonctionne pas, j'ai créer une fonction que je lance à partir d'un bouton :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function Secteur()
    For i = 3 To Sheets("PA2011").Range("A" & Rows.Count).End(xlUp).Row
        Select Case Sheets("PA2011").Cells(i, 10).Value
            Case "entrepôt>Production>piece A32"
                Sheets("PA2011").Cells(i, 15).Value = "PA"
            Case "entrepôt>Production"
                Sheets("PA2011").Cells(i, 15).Value = "production"
            Case "entrepôt>Production>Pièce B*"
                Sheets("PA2011").Cells(i, 15).Value = "AMG DC"
            Case "*maintenance"
                Sheets("PA2011").Cells(i, 15).Value = "maintenance"        
        End Select
    Next
End Function
Pour les deux premier cas, celà fonctionne car j'ai mis la chaine de caractère en entier. Mais je voudrais effectuer le select case uniquement sur une partie de la chaine, comme les cas 3 et 4 par exemple ... qui pour le moment ne fonctionne pas.

Merci d'avance pour votre aide!
__________________
---Fowlie---
fowlie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 12h30   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Essaie :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
For i = 3 To Sheets("PA2011").Range("A" & Rows.Count).End(xlUp).Row
    With Sheets("PA2011")
        If InStr(.Cells(i, 10), "entrepôt>Production>piece A32") > 0 Then
            .Cells(i, 15).Value = "PA"
        ElseIf InStr(.Cells(i, 10), "entrepôt>Production") > 0 Then
            .Cells(i, 15).Value = "production"
        ElseIf InStr(.Cells(i, 10), "entrepôt>Production>Pièce B") > 0 Then
            .Cells(i, 15).Value = "AMG DC"
        ElseIf InStr(.Cells(i, 10), "maintenance") > 0 Then
            .Cells(i, 15).Value = "maintenance"
        End If
    End With
Next
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/01/2012, 13h41   #3
Membre habitué
 
Avatar de fowlie
 
Étudiant
Inscription : mai 2011
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 335
Points : 146
Points : 146
ça raccourci un peu mon code ... mais le pb reste le même. Si je met la chaine de caractère entière ça marche .. mais si je ne met qu'une partie ça ne marche pas ..

EDIT

Je retire ce que j'ai dit, ça marche, un erreur de majuscule que je viens de corriger et c'est bon

Merci beaucoup!!
__________________
---Fowlie---
fowlie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 13h51   #4
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

Informations professionnelles :
Activité : La très haute tension :D
Secteur : Service public

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut

Tu peux utiliser Like dans ce cas

Code :
1
2
3
if .Cells(i, 10) like "entrepôt>Production>piece A32" then
 
if .Cells(i, 10) like "*>Production>*" then

Si le projet est plus conséquent, il serait peut-être utile de créer un type perso, voir une class en fonction de ce que tu veux faire par la suite.

Tu peux aussi regarder du coté de la fonction Split, qui te permettrait de découper ta chaîne en utilisant les ">" comme clef.

++
Qwaz
__________________

MagicQwaz := Harry Potter la baguette en moins
Le monde dans lequel on vit
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 15h16   #5
Membre habitué
 
Avatar de fowlie
 
Étudiant
Inscription : mai 2011
Messages : 335
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 335
Points : 146
Points : 146
Merci pour l'info, ce que tu m'as proposé avant marche parfaitement, mais je retiens quand même =)
__________________
---Fowlie---
fowlie est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h50.


 
 
 
 
Partenaires

Hébergement Web