Faire des instructions en fonction de la valeur d'une case
Fermé
Max80250
Messages postés
11
Date d'inscription
vendredi 12 avril 2013
Statut
Membre
Dernière intervention
18 décembre 2013
-
13 déc. 2013 à 14:24
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 - 18 déc. 2013 à 19:28
Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 - 18 déc. 2013 à 19:28
A voir également:
- Faire des instructions en fonction de la valeur d'une case
- Fonction si et - Guide
- Aller à la ligne dans une case excel - Guide
- Formule excel si contient texte alors valeur ✓ - Forum Excel
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
5 réponses
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
13 déc. 2013 à 16:39
13 déc. 2013 à 16:39
Bonjour,
Tu peux essayer avec ce code
A+
Tu peux essayer avec ce code
Sub Test()
Dim Plage As Range, C As Range
Select Case Range("G2").Value
Case "6xxxxxx"
Set Plage = Range("I1:K30")
Set C = Workbooks("MSAP.xls").Worksheets("Feuil1").Range("C3")
Case "7xxxxxx"
Set Plage = Range("I1:K15")
Set C = Workbooks("MSAP.xls").Worksheets("Feuil1").Range("C25")
Case Else
Exit Sub
End Select
Copier Plage, C
End Sub
Sub Copier(Plage As Range, C As Range)
Plage.Copy
C.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
A+
Max80250
Messages postés
11
Date d'inscription
vendredi 12 avril 2013
Statut
Membre
Dernière intervention
18 décembre 2013
14 déc. 2013 à 18:58
14 déc. 2013 à 18:58
Bonjour
Merci de vos précisions
J'avais omis de dire que je travaille sur un réseau et que de plus je travaille avec deux fichier qui sont ouverts
et que j'ai déjà une macro qui effectue un certain nombre de tris avant de terminer par la sélection de données et sa copie
et je bute sur la fonction
Set C = Workbooks("MSAP.xls").Worksheets("Feuil1").Range("C3")
Je me demande s'il ne faut pas simplement activer le fichier dans ma macro
Une nouvelle fois je fais appel à vous
A+
Merci de vos précisions
J'avais omis de dire que je travaille sur un réseau et que de plus je travaille avec deux fichier qui sont ouverts
et que j'ai déjà une macro qui effectue un certain nombre de tris avant de terminer par la sélection de données et sa copie
et je bute sur la fonction
Set C = Workbooks("MSAP.xls").Worksheets("Feuil1").Range("C3")
Je me demande s'il ne faut pas simplement activer le fichier dans ma macro
Une nouvelle fois je fais appel à vous
A+
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
14 déc. 2013 à 19:59
14 déc. 2013 à 19:59
Bonjour,
En règle générale, il est préférable d'éviter l'activation ou la sélection d'objet.
Lorsque tu écris
Tu peux alors utiliser les propriétés et méthodes de l'objet Range : C.value, C.copy, etc .
A+
En règle générale, il est préférable d'éviter l'activation ou la sélection d'objet.
Lorsque tu écris
Set C = Workbooks("MSAP.xls").Worksheets("Feuil1").Range("C3")Tu indiques explicitement que la variable C représente la cellule C3 de la feuille "Feuil1" du classeur "MSAP.xls".
Tu peux alors utiliser les propriétés et méthodes de l'objet Range : C.value, C.copy, etc .
A+
Max80250
Messages postés
11
Date d'inscription
vendredi 12 avril 2013
Statut
Membre
Dernière intervention
18 décembre 2013
18 déc. 2013 à 18:52
18 déc. 2013 à 18:52
Bonjour
Merci j'ai bien saisi le role des commandes
Comme maintenant ma macro bute sur la fin de la procédure je vais apporter quelque précision
J'ai inclus les infos précisées dans nos échanges dans ma macro
j'avais déjà un Sub d'ouverture et j'ai donc supprimé le
Sub Test()
J'ai continué à saisir mes variables
Dim Plage As Range, C As Range
Select Case Range("G2").Value
Case "6021"
Set Plage = Range("I1:K30")
Set C = Workbooks("MSAP.xls").Worksheet("Feuil1").Range("C3")
Case "6029"
Set Plage = Range("I1:K22")
Set C = Workbooks("MSAP.xls").Worksheet("Feuil1").Range("C32")
----------etc avec 26 plages différentes
Case Else
Exit Sub
End Select
Copier Plage, C
Copier(Plage As Range, C As Range)
Plage.Copy
C.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Et la maintenant ma macro s'arrête à Copier Plage,C
Je n'ai pas de fin se Sub car ma macro doit s'arrêter à la fin
Est ce du a ce que je n'ai recréer un Sub Copier Plage, C et est ce que dans une macro on peut avoir plusieurs Sub et que la macro se poursuive normalement
Je suis un peu short sur le sujet
Merci de votre aide
Merci j'ai bien saisi le role des commandes
Comme maintenant ma macro bute sur la fin de la procédure je vais apporter quelque précision
J'ai inclus les infos précisées dans nos échanges dans ma macro
j'avais déjà un Sub d'ouverture et j'ai donc supprimé le
Sub Test()
J'ai continué à saisir mes variables
Dim Plage As Range, C As Range
Select Case Range("G2").Value
Case "6021"
Set Plage = Range("I1:K30")
Set C = Workbooks("MSAP.xls").Worksheet("Feuil1").Range("C3")
Case "6029"
Set Plage = Range("I1:K22")
Set C = Workbooks("MSAP.xls").Worksheet("Feuil1").Range("C32")
----------etc avec 26 plages différentes
Case Else
Exit Sub
End Select
Copier Plage, C
Copier(Plage As Range, C As Range)
Plage.Copy
C.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Et la maintenant ma macro s'arrête à Copier Plage,C
Je n'ai pas de fin se Sub car ma macro doit s'arrêter à la fin
Est ce du a ce que je n'ai recréer un Sub Copier Plage, C et est ce que dans une macro on peut avoir plusieurs Sub et que la macro se poursuive normalement
Je suis un peu short sur le sujet
Merci de votre aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
523
18 déc. 2013 à 19:28
18 déc. 2013 à 19:28
Bonjour,
Dans la procédure principale, tu fais appel à la procédure Copier qui est une autre procédure chargée de copier la plage. C'est une procédure distincte qui commence par sub ... et finit par End Sub.
A+
Dans la procédure principale, tu fais appel à la procédure Copier qui est une autre procédure chargée de copier la plage. C'est une procédure distincte qui commence par sub ... et finit par End Sub.
A+