Inserer valeur avec conditions
Résolu
vinceggg
-
mic13710 Messages postés 1087 Date d'inscription Statut Membre Dernière intervention -
mic13710 Messages postés 1087 Date d'inscription Statut Membre Dernière intervention -
Bonjour a tous
J'ai des difficultes pour faire tourner une macro:
Ma colonne F ne possede que du texte: ex: Warrant; Equities, Deposit, Clif Loan, XL-Loan, Term Loan, Cash, overdraft...
Je souhaiterai que le mot "LOAN" apparaisse dans la colonne G, quand la ligne correspondante de la colonne F contient le mot loan.
exemple: (le texte ne commence qu'a partir de la ligne 7, avant c'est blank)
Expected Result:
H | G
Warrant |
Equities |
Deposit |
Clif Loan | loan
XL-Loan | loan
ma tentative:
Sub CashvsCashSUBCATEGORY()
Sheets("Valuation").Activate
ActiveSheet.Range("F:F").AutoFilter Field:=6, Criteria1:= _
"=*loan*", Operator:=xlAnd
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("G7:G" & End_Of_Table).Select
ActiveCell.FormulaR1C1 = "LOAN-TEST"
Selection.FillDown
End Sub
Le filtre semble fonctionner normalement sur la colonne F, mais ca ne copie pas "loan" dans la colonne G.
j'ai erreur 1024
Et c'est cette ligne qui est surligne en jaune: Range("G7:G" & End_Of_Table).Select
Avez vous des idees ?
merci d'avance pour l'aide apportee.
J'ai des difficultes pour faire tourner une macro:
Ma colonne F ne possede que du texte: ex: Warrant; Equities, Deposit, Clif Loan, XL-Loan, Term Loan, Cash, overdraft...
Je souhaiterai que le mot "LOAN" apparaisse dans la colonne G, quand la ligne correspondante de la colonne F contient le mot loan.
exemple: (le texte ne commence qu'a partir de la ligne 7, avant c'est blank)
Expected Result:
H | G
Warrant |
Equities |
Deposit |
Clif Loan | loan
XL-Loan | loan
ma tentative:
Sub CashvsCashSUBCATEGORY()
Sheets("Valuation").Activate
ActiveSheet.Range("F:F").AutoFilter Field:=6, Criteria1:= _
"=*loan*", Operator:=xlAnd
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
Range("G7:G" & End_Of_Table).Select
ActiveCell.FormulaR1C1 = "LOAN-TEST"
Selection.FillDown
End Sub
Le filtre semble fonctionner normalement sur la colonne F, mais ca ne copie pas "loan" dans la colonne G.
j'ai erreur 1024
Et c'est cette ligne qui est surligne en jaune: Range("G7:G" & End_Of_Table).Select
Avez vous des idees ?
merci d'avance pour l'aide apportee.
A voir également:
- Inserer valeur avec conditions
- Insérer video powerpoint - Guide
- Insérer signature word - Guide
- Insérer liste déroulante excel - Guide
- Insérer sommaire word - Guide
- Insérer espace insécable word - Guide
2 réponses
Il ne suffit pas de déclarer une variable, encore faut-il lui attribuer une valeur.
La difficulté dans les tableaux filtrés c'est de sélectionner la seule plage visible.
Il faut donc chercher la première ligne visible de la plage et ensuite chercher la dernière cellule utilisée dans la colonne de référence (ici la F)
Dans le cas d'un seul critère, remplacer les lignes suivantes :
Range("G7:G" & End_Of_Table).Select
ActiveCell.FormulaR1C1 = "LOAN-TEST"
Selection.FillDown
Par :
Range("G7").Select
Dim cellule As Range
Set cellule = ActiveCell
'récupérer la prochaine cellule visible
Do
Set cellule = cellule.Offset(1, 0)
Loop Until cellule.EntireRow.Hidden = False
cellule.Select
ActiveCell.FormulaR1C1 = "LOAN-TEST"
Selection.Copy
Range("G" & ActiveCell.Row & ":G" & Range("F65536").End(xlUp).Row).Select
ActiveSheet.Paste
Ce code n'est pas très propre mais il devrait fonctionner.
A vous de l'adapter à votre utilisation.
La variable End_Of_Table peut-être supprimée, à moins qu'elle ne soit utilisée par ailleurs
Michel
Edit : message modifié suite à l'élimination d'une variable inutile.
La difficulté dans les tableaux filtrés c'est de sélectionner la seule plage visible.
Il faut donc chercher la première ligne visible de la plage et ensuite chercher la dernière cellule utilisée dans la colonne de référence (ici la F)
Dans le cas d'un seul critère, remplacer les lignes suivantes :
Range("G7:G" & End_Of_Table).Select
ActiveCell.FormulaR1C1 = "LOAN-TEST"
Selection.FillDown
Par :
Range("G7").Select
Dim cellule As Range
Set cellule = ActiveCell
'récupérer la prochaine cellule visible
Do
Set cellule = cellule.Offset(1, 0)
Loop Until cellule.EntireRow.Hidden = False
cellule.Select
ActiveCell.FormulaR1C1 = "LOAN-TEST"
Selection.Copy
Range("G" & ActiveCell.Row & ":G" & Range("F65536").End(xlUp).Row).Select
ActiveSheet.Paste
Ce code n'est pas très propre mais il devrait fonctionner.
A vous de l'adapter à votre utilisation.
La variable End_Of_Table peut-être supprimée, à moins qu'elle ne soit utilisée par ailleurs
Michel
Edit : message modifié suite à l'élimination d'une variable inutile.
Déjà, il faudrait savoir sur quel logiciel vous travaillez.
Si c'est excel, End_of_Table n'est pas une instruction vba valide.
Pour vba c'est une variable, et vous ne l'avez pas défini ni même attribué une valeur.
Michel
Si c'est excel, End_of_Table n'est pas une instruction vba valide.
Pour vba c'est une variable, et vous ne l'avez pas défini ni même attribué une valeur.
Michel
Bonjour,
merci pour la reponse rapide,
je travaille sur VBA - Microsoft Office Excel 2007.
mon wexcel sheet s'appelle Valuation
J'ai rajoute End_Of_Table as integer au debut du programme,
mais la colonne G ne se remplit toujours pas.
J'ai de nouevau ce message d'erreur
Run-time error '1004':
Method 'Range' of object'_Global' failed.
Et c'est toujours la meme ligne qui est surligne en jaune.
En fait je n'arrive pas a ecrire correctement: que excel doit ecrire "loan" dans la colonne G jusuqu'a la derniere ligne du tableau
merci pour la reponse rapide,
je travaille sur VBA - Microsoft Office Excel 2007.
mon wexcel sheet s'appelle Valuation
J'ai rajoute End_Of_Table as integer au debut du programme,
mais la colonne G ne se remplit toujours pas.
J'ai de nouevau ce message d'erreur
Run-time error '1004':
Method 'Range' of object'_Global' failed.
Et c'est toujours la meme ligne qui est surligne en jaune.
En fait je n'arrive pas a ecrire correctement: que excel doit ecrire "loan" dans la colonne G jusuqu'a la derniere ligne du tableau
merci pour cette solution,
Mais, je ne peux pas privilegier cette solution, car dans la realite, dans la colonne G, je cherche a ecrire automatiquement, "loan" (quand une ligne contiendra loan dans la colonne F). Mais je cherche aussi a ecrire d'autres valeurs en G, en fonciton des valeurs en H.
Donc je suis oblige de faire tourner une macro, pour que toutes les "insertions" en G, puissent se faire sans s'impacter.. (il doit y avoir plus de 20 000 lignes dans mon fichier excel), c'est pour cela que je dois en automatiser le traitement.
Si j'arrive a automatiser la partie avec "loan", j'arriverai a automatiser le reste par moi-meme, mais je suis oblige de faire comme ca, du moins je pense.
Mais, je ne peux pas privilegier cette solution, car dans la realite, dans la colonne G, je cherche a ecrire automatiquement, "loan" (quand une ligne contiendra loan dans la colonne F). Mais je cherche aussi a ecrire d'autres valeurs en G, en fonciton des valeurs en H.
Donc je suis oblige de faire tourner une macro, pour que toutes les "insertions" en G, puissent se faire sans s'impacter.. (il doit y avoir plus de 20 000 lignes dans mon fichier excel), c'est pour cela que je dois en automatiser le traitement.
Si j'arrive a automatiser la partie avec "loan", j'arriverai a automatiser le reste par moi-meme, mais je suis oblige de faire comme ca, du moins je pense.
un tres grand merci.