Application d'une formule dans plusieurs onglets
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je suis en train de faire une macro VBA et je suis bloque.
Je veux appliquer une meme macro a plusieurs feuilles sauf la premiere. Dans cette macro, j'ai une formule contenant une recherche V qui recupere des donnees dans un autre fichier "Conversion Table" dans l'onglet ayant le meme nom que celui de la feuille dans laquelle la formule s'applique.
J'ai ecris le code suivant, si vous pouvez m'aider, ce serait genial.
Private Sub CommandButton1_Click()
Dim nbfeuilles As Integer
Dim i As Integer
Dim j As Integer
nbfeuilles = Sheets.Count
salon = ActiveSheet.Name
For i = 2 To nbfeuilles
Sheets(i).Select
Columns("A:A").Insert Shift:=xlToRight
Cells(j, 2).Cut Destination:=Range("A8:A500")
Cells(j, 1).Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next j
For j = 1 To 500
Cells(j, 2).Select
Selection.FormulaR1C1 = "IF(ISERROR(VLOOKUP(RC[-1],'[Conversion Table.xlsx]" & Sheets(i).Name & "'!R2C1:R500C2,1,FALSE)),RC[-1],VLOOKUP(RC[-1],'[Conversion Table.xlsx]" & Sheets(i).Name & "'!R2C1:R500C2,1,FALSE))"
Cells(j, 2).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Replace What:="0 ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False 'enleve les espaces au debut des intitules
Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False 'enleve les 0 qui peuvent apparaitre
Next j
Next i
End Sub
Je suis en train de faire une macro VBA et je suis bloque.
Je veux appliquer une meme macro a plusieurs feuilles sauf la premiere. Dans cette macro, j'ai une formule contenant une recherche V qui recupere des donnees dans un autre fichier "Conversion Table" dans l'onglet ayant le meme nom que celui de la feuille dans laquelle la formule s'applique.
J'ai ecris le code suivant, si vous pouvez m'aider, ce serait genial.
Private Sub CommandButton1_Click()
Dim nbfeuilles As Integer
Dim i As Integer
Dim j As Integer
nbfeuilles = Sheets.Count
salon = ActiveSheet.Name
For i = 2 To nbfeuilles
Sheets(i).Select
Columns("A:A").Insert Shift:=xlToRight
Cells(j, 2).Cut Destination:=Range("A8:A500")
Cells(j, 1).Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Next j
For j = 1 To 500
Cells(j, 2).Select
Selection.FormulaR1C1 = "IF(ISERROR(VLOOKUP(RC[-1],'[Conversion Table.xlsx]" & Sheets(i).Name & "'!R2C1:R500C2,1,FALSE)),RC[-1],VLOOKUP(RC[-1],'[Conversion Table.xlsx]" & Sheets(i).Name & "'!R2C1:R500C2,1,FALSE))"
Cells(j, 2).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.Replace What:="0 ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False 'enleve les espaces au debut des intitules
Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False 'enleve les 0 qui peuvent apparaitre
Next j
Next i
End Sub
A voir également:
- Application d'une formule dans plusieurs onglets
- Formule moyenne excel plusieurs colonnes - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Formule si et - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Comment supprimer une application préinstallée sur android - Guide
1 réponse
Bonjour
Tout d'abord il manque un "For j = 1 to 500" dans la première sous boucle .
Ensuite, il manque le signe "=" devant le IF dans la formule,
Puis, pour supprimer des espaces utilisez la commande TRIM ou LTRIM.
Vous pouvez aussi, inclure directement dans la formule, SUBSTITUTE pour remplacer les 0 par des ESPACES, puis y appliquer TRIM pour supprimer tous les espaces ainsi créer. Ce qui donne ceci:
Vous pouvez remplacer:
Sauf erreur ou oubli de ma part,
bonne journée
cdlt
Tout d'abord il manque un "For j = 1 to 500" dans la première sous boucle .
Ensuite, il manque le signe "=" devant le IF dans la formule,
Puis, pour supprimer des espaces utilisez la commande TRIM ou LTRIM.
Vous pouvez aussi, inclure directement dans la formule, SUBSTITUTE pour remplacer les 0 par des ESPACES, puis y appliquer TRIM pour supprimer tous les espaces ainsi créer. Ce qui donne ceci:
Selection.FormulaR1C1 = "=IF(ISERROR(VLOOKUP(RC[-1],'[Conversion Table.xlsx]" & Sheets(i).Name & "'!R2C1:R500C2,1,FALSE)),TRIM(SUBSTITUTE(RC[-1],0,"""",1)),TRIM(SUBSTITUTE(VLOOKUP(RC[-1],'[Conversion Table.xlsx]" & Sheets(i).Name & "'!R2C1:R500C2,1,FALSE),0,"""",1)))"ce qui va considérablement raccourcir le code.
Vous pouvez remplacer:
Cells(j, 2).Selectpar
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Cells(j, 2).value=Cells(j, 2).valueRajoutez la ligne suivante en première ligne:
Application.screenUpdating=False,ça ira beaucoup plus vite.
Sauf erreur ou oubli de ma part,
bonne journée
cdlt
J'ai encore quelques ajustements à faire, je reviens vers vous si je ne trouve pas.