Faire des instructions en fonction de la valeur d'une case
Max80250
Messages postés
11
Date d'inscription
Statut
Membre
Dernière intervention
-
Gyrus Messages postés 3334 Date d'inscription Statut Membre Dernière intervention -
Gyrus Messages postés 3334 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaites en VBA appliquer des instructions en fonction de la valeur d'une cellule qui est variable
J'ai tenté d'utiliser l'instruction If Then Else avec ElseIF en fonction des valeurs que peut prendre ma cellule
Mais cela ne marche pas la première OK mais après ça plante : on arrive de suite à l'instruction Else
Je souhaiterais utiliser éventuellement Select Case mais je ne vois pas bien comment ni la syntaxe
ce que je veux faire :
If G2 = "6xxxxxx" Then
Range("I1:K30").Select
Selection.Copy
Windows("MSAP.xls").Activate
Range("c3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
et dans la suite j'ai :
If G2='7xxxxxx" Then
Range("I1:K15").Select
Selection.Copy
Windows("MSAP.xls").Activate
Range("c25").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Le fait en fonction de la cellule G2 l'instruction qui suit est différentes : zone de copie et de collage
Comment faire
Merci de votre aide
Je souhaites en VBA appliquer des instructions en fonction de la valeur d'une cellule qui est variable
J'ai tenté d'utiliser l'instruction If Then Else avec ElseIF en fonction des valeurs que peut prendre ma cellule
Mais cela ne marche pas la première OK mais après ça plante : on arrive de suite à l'instruction Else
Je souhaiterais utiliser éventuellement Select Case mais je ne vois pas bien comment ni la syntaxe
ce que je veux faire :
If G2 = "6xxxxxx" Then
Range("I1:K30").Select
Selection.Copy
Windows("MSAP.xls").Activate
Range("c3").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
et dans la suite j'ai :
If G2='7xxxxxx" Then
Range("I1:K15").Select
Selection.Copy
Windows("MSAP.xls").Activate
Range("c25").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Le fait en fonction de la cellule G2 l'instruction qui suit est différentes : zone de copie et de collage
Comment faire
Merci de votre aide
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
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Attribuer une valeur à une cellule texte excel ✓ - Forum Excel
- Excel case ✓ - Forum Excel
5 réponses
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+
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+
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+
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