VBA
Résolu/Fermé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
30 déc. 2010 à 18:48
Bonjour,
Montre déjà le code que tu a fait et qui va pas.
A+
Montre déjà le code que tu a fait et qui va pas.
A+
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
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
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
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..
Mais y a beaucoups plus simple..
Encore plus simple ?
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)
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)
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...
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...
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
4 janv. 2011 à 11:42
Elself c6 = P31004 Then
Elself c6 = P31005 Then
Les lignes ci-dessous ne sont pas nécessaires.
Et je me demande bien pourquoi tu prend pas l'exemple plus simple..
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..
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
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
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
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
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)
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)
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?
Étant donné que j'ai une liste déroulante en "c6",cela est-il gênant?
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
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)
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)
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"
Cette liste je l'ai créée via l'onglet "données" dans "validation de données"
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
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)
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
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
Tu télécharge ton fichier XLM et tu l'ouvre dans excel, ensuite tu me dis comment tu fait pour l'ouvrir
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
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
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
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)
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)