Formule de recherche
Bonjour,
J'ai un fichier Excel dans el qu'elle j'effectue un tri via une macro sous VBA.
dans cette macro j'ai cette formule:
F = "=IF(Sheet1!R[" & C & "]C3=R1C1,IF(Sheet1!R[" & C & "]C4=R1C,Sheet1!R[" & C & "]C5,0),0)"mais le problème c'est que du coup à chaque modèle il reprend de 0
J'aimerais donc que il ne reprenne pas de la 1ère ligne pour chaque marque.
Je m'explique:
pour la marque Audi qui se situe en ligne 123, pour le modèle A1 (8X) il commence de la ligne 1 mais pour le modèle A3 (8P) MY 2008 que il commence de la ligne 123.
Je ne peut vous mettre en pièce jointe le fichier je vous met donc la macro (le fichier ne veux pas être mis en pièce jointe).
Sub Macro1()
'
' Macro1 Macro
'copier coller de la colonne marque
Sheets("Feuil2").Activate
D = Range("C2")
A0 = 1
B5 = 2 'colonne
Do While A0 < D
Sheets("Feuil3").Select
Cells(1, B5).Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Feuil4").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Cells.Select
Columns("C:AZ").Select
Selection.ColumnWidth = 17.5
Range("B1").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(Sheet1!C3,RC[-1])" 'NB de lignes TOTAL pour la marque
Range("B2").Select
ActiveCell.FormulaR1C1 = "=SUM(RC[1]:RC[9])" 'Somme du Nombre de Type par modèle
Range("B3").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(R[1]C[1]:R[47]C[50],""*"")" 'Somme des Types pour la marque
Range("B4").Select
ActiveCell.FormulaR1C1 = "=COUNTIF(R[-3]C:R[-3]C[50],""*"")" 'Somme des modèle dans la marque
'Définitions des 4 variables
B1 = Range("B1")
B2 = Range("B2")
B3 = Range("B3")
B4 = Range("B4")
'Application d'une formule pour compter le NB de fois que se répète le modèle dans la marque.
C = 3 'changement de colonne
A = 0 'compteur de boucle
Do While A < B4 'activation de la boucle temps que A est inférieur à la cellule B4
Cells(2, C).Select
ActiveCell.FormulaR1C1 = "=COUNTIFS(Sheet1!C3,R1C1,Sheet1!C4,R[-1]C)" 'Formule pour le NB de fois que se répète le modèle dans la marque
C = C + 1
A = A + 1
Loop
A = 0 'compteur de boucle
B = 3 'colonne
N = 0 'variable
O = 0 'Ligne
C = 0 'Ligne dans la formule F
Do While A < B4
Z = Cells(2, B) 'NB modèle actuel
S = "=COUNTIF(R4C:R[" & Z & "]C,""*"")" 'Formule pour somme des modèles/marques
Cells(3, B).Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = S
N = Cells(3, B)
Do While N < Z
' F = "=IF(Sheet1!R[" & C & "]C4=R1C,Sheet1!R[" & C & "]C5,0)" 'Formule pour charque marque
F = "=IF(Sheet1!R[" & C & "]C3=R1C1,IF(Sheet1!R[" & C & "]C4=R1C,Sheet1!R[" & C & "]C5,0),0)"
Cells(4 + O, B).Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = F
M = Cells(3 + O, B)
'M = Case précédente
If M <= 0 Then
C = C + 1
Else
Cells(4 + O, B).Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = F
M = Cells(4 + O, B)
O = O + 1
End If
S = "=COUNTIF(R4C:R[" & Z & "]C,""*"")" 'Formule pour somme des modèles/marques
Cells(3, B).Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = S
N = Cells(3, B)
Loop
C = 0
A = A + 1
B = B + 1
O = 0
Loop
Sheets("Feuil2").Select
M1 = Range("A1")
If M1 = "CHEVROLET US/EU/SAM" Then
M1 = "CHEVROLET"
ElseIf M1 = "FORD / FORD US" Then
M1 = "FORD"
ElseIf M1 = "OPEL / SATURN / VAUXHALL" Then
M1 = "OPEL"
End If
Cells.Select
Selection.Cut
With Sheets.Add
.Name = M1
End With
ActiveSheet.Paste
B5 = B5 + 1
A0 = A0 + 1
Loop
End SubMerci d'avance
Bonjour,
le fichier ne veux pas être mis en pièce jointe
Les fichiers n'en font qu'à leur tête ces derniers temps !
Pour ma part, je pense que vous devriez revoir toutes les formules au style A1 car je pense que l'option R1C1 n'est pas forcément idéale dans votre cas...
Cdlt,
J'ai essayer à nouveau et la sa marche je ne comprend pas ... voici donc le fichier
pour ce qui est des formules je les créer en enregistrant la macro et je les modifies pour y intégrer mes variables.
Je ne sais donc par quoi remplacer.
Mais ceci fonctionne très bien car par moment il me faut utilisé soit une cellule fixe $C$1 ou des fois juste une colonne $C1.
Si vous connaissais une autre formule ou une solution plus simple, je suis ouvert à toute proposition.
Merci