VBA

Résolu/Fermé
Jer - 30 déc. 2010 à 17:31
 Jer - 6 janv. 2011 à 10:59
Bonjour,


J'ai un problème d'utilisation VBA
En effet je veux passer d'une page à une autre suivant la valeur d'une cellule, par exemple:
Si c6= P31003 alors aller sur la page 2 en b43 et la colorier en rouge et pour chaque valeur une place différente sur des pages différentes.
J'ai essayé avec la fonction "if...then...else" mais cela ne fonctionne pas ou du moins cela colorie toutes les cases programmées (ce que je ne veux pas)
Merci

18 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
30 déc. 2010 à 18:48
Bonjour,
Montre déjà le code que tu a fait et qui va pas.
A+
0
Voici le code pour deux références:

Sub Macro1()
'
' Macro1 Macro
'

'
If c6 = P31003 Then
Sheets("N-1").Select
Range("P6").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0


End With

Else


If c6 = P31004 Then
Sheets("N-1").Select
Range("P8").Select

With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With

Else


If c6 = P31005 Then
Sheets("N-1").Select
Range("P9").Select

With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0

End With

End If

End If
End If


End Sub
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
Modifié par lermite222 le 3/01/2011 à 16:28
1°) Dans un If il ne peu y avoir qu'un seul Else, tu aurais pu faire..
    If c6 = P31003 Then   
    '...   
    ElseIf c6 = P31004 Then   
    '...   
    ElseIf c6 = P31005 Then   
    '....   
    End If

Mais y a beaucoups plus simple..
Sub Macro1()   
Dim Cel As Range   
    Select Case c6   
    Case "P31003": Cel = Range("P6")   
    Case "P31004": Cel = Range("P8")   
    Case "P31005": Cel = Range("P9")   
    End Select   
    Sheets("N-1").Cel.Interior.ColorIndex = 3   
End Sub

Encore plus simple ?
Sub Macro2  
    Sheets("N-1").Range("P" & IIf(CInt(Right(c3, 1)) = 5, 9, CInt(Right(c3, 1)) * 2)).Interior.ColorIndex = 3  
End Sub  

A+
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
0
Bonjour,

Merci pour toutes ces précisions
J'ai essayé avec le 1er code donné:

Sub Macro1()
'
' Macro1 Macro
'

'
If c6 = P31003 Then
Sheets("N-1").Select
Range("P6").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0


Elself c6 = P31004
Sheets("N-1").Select
Range("P8").Select

With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With

Elself c6 = P31005
Sheets("N-1").Select
Range("P9").Select

With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0

End With

End If


End Sub



Hélas un message d'erreur apparait: sub ou function non défini...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
4 janv. 2011 à 11:42
Elself c6 = P31004 Then

Elself c6 = P31005 Then

Les lignes ci-dessous ne sont pas nécessaires.
Pattern = xlSolid 
.PatternColorIndex = xlAutomatic 
.TintAndShade = 0 
.PatternTintAndShade = 0 


Et je me demande bien pourquoi tu prend pas l'exemple plus simple..
0
J'ai pris ce code parce que je ne comprends pas "le plus simple" (malheureusement)
Par contre, il manque quelques chose après le "then" car il ne veut pas me le prendre:

Sub Macro1()
'
' Macro1 Macro
'

'
If c6 = P31003 Then
Sheets("N-1").Select
Range("P6").Select

Elself c6 = P31004 Then
Sheets("N-1").Select
Range("P8").Select

Elself c6 = P31005 Then
Sheets("N-1").Select
Range("P9").Select

End If


End Sub


Erreur: fin d'instruction attendu avec les "then" en rouge
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
Modifié par lermite222 le 4/01/2011 à 12:43
la variable c6 est un string (vu qu'il y a une lettre dedans.
Donc tu dois comparer Un String AVEC un string
    If c6 = "P31003" Then 

Ajouter les guillements.

et c'est un I (de Isidore)
ElseIf
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
0
Bon...plus d'erreur seulement maintenant ma macro ne fonctionne pas. elle ne me renvoie pas à l'endroit désiré, il y a juste un scintillement et c'est tout :-S
Étant donné que j'ai une liste déroulante en "c6",cela est-il gênant?
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
Modifié par lermite222 le 4/01/2011 à 15:36
Grrr.. C6 c'est une cellule ?
Ta liste déroulante c'est quoi Un combobox, un filtre automatique .. ?
Malheureux qu'y faut chaque fois vous EXTIRPER les renseignements....
EDIT : Le plus simple, si ton classeur n'a pas de données confidentielle poste le ou alors un classeur modèle avec des données aléatoire.
Sur CiJoint.fr et mettre le lien dans un poste suivant.

L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
0
C6 est une cellule dans laquelle: soit on tape le code que l'on connait, soit l'on cherche le code dans la liste parmi les 1163 codes existant.
Cette liste je l'ai créée via l'onglet "données" dans "validation de données"
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
Modifié par lermite222 le 4/01/2011 à 15:46
    if Sheets("NomFeuille").Range("C6") = "P31003" Then 

ou..
Dim C6 as string
    C6 = Sheets("NomFeuille").Range("C6") .value

Alors tu dois rien changer dans tes If

Sans préjuger du résultat.
De plus, ça ne va marcher qu'avec tes 3 codes et comme tu dis que tu en a 1163 ????
Faudra avoir une autre solution.


L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
0
j'ai essayé d'envoyer le fichier mais "ci-joint.fr" ne fonctionne pas.
0
C'est bon: http://www.cijoint.fr/cjlink.php?file=cj201101/cijWCkSum4.xlsx
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
4 janv. 2011 à 16:30
Bon, beh tu sais ce que tu va faire...
Tu télécharge ton fichier XLM et tu l'ouvre dans excel, ensuite tu me dis comment tu fait pour l'ouvrir
0
clique sur le lien puis clic sur recherche GMAOtest3.Ensuite le fichier s'ouvre normalement sous excel.je n'ai pas enregistré la partie macro pour éviter les incompatibilités mais l'on a déjà nommé les 3 premiers codes:

Sub Macro1()
'
' Macro1 Macro
'

'
If c6 = "P31003" Then
Sheets("N-1").Select
Range("P6").Select

ElseIf c6 = "P31004" Then
Sheets("N-1").Select
Range("P8").Select

ElseIf c6 = "P31005" Then
Sheets("N-1").Select
Range("P9").Select

End If


End Sub
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
Modifié par lermite222 le 4/01/2011 à 16:53
Tu n'a pas fait ce que je t'ai demander...
TELECHERGER ton classeur.. tout est en XLM et pas de GMAOtest3
De plus, ont est occuper sur des macros et tu sauve SANS MACRO, c'est quoi ta réflexion.
Je sens que... ..... ça commence tout doucement à m'énerver
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
0
http://www.cijoint.fr/cjlink.php?file=cj201101/cijPTvKomw.xlsm
0
C'est bon problème résolu, et c'est totalement différent par rapport à ce qu'on a pu aborder...
Merci du coup de main quand même...et de la patience!
0