Bonjour
Je souhaiterais avoir dans une macro la fonction rechercheV du type ci dessous.
et continuer en descendant d'une ligne.
Pièce jointe 193529Code:ActiveCell.FormulaR1C1 = "=VLOOKUP(Feuil1!RC[-5],BD!R[-10]C[-6]:R[97]C[-3],4)"
Version imprimable
Bonjour
Je souhaiterais avoir dans une macro la fonction rechercheV du type ci dessous.
et continuer en descendant d'une ligne.
Pièce jointe 193529Code:ActiveCell.FormulaR1C1 = "=VLOOKUP(Feuil1!RC[-5],BD!R[-10]C[-6]:R[97]C[-3],4)"
Bonjour,
A lire ces deux billets Ecrire une formule dans Excel à l'aide d'une procédure VBA et la suite Ecrire une formule dans Excel à l'aide d'une procédure VBA (Part 2)
J'ai reussi a faire cette macro, mais je n'arrive pas a poursuivre
en decalant d'une ligne
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Sub Macro1() Range("G12").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],R[6]C[5]:R[11]C[10],6)" Range("f12").Select ActiveCell.FormulaR1C1 = "=SUM(RC[-2]*RC[-1])" Range("d12").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-2],R[6]C[9]:R[11]C[14],2)" Range("C12").Select ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],R[6]C[9]:R[11]C[14],2)" With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With End Sub
Bonjour,
C'est dès fois fatiguant de répondre. Manifestement tu n'as pas lu les liens que j'ai référencé.
j'ai lu les liens dont tu me parle.
mais je ne vois pas en ce qui concerne la fonction recherchev
ainsi qu'une fois la recherche effectuee, descendre d'une ligne.
c'est pas grave, je vais continue de chercher seul
merci a toi
cris
Bonjour,
Le lien explique, comment écrire une formule dans une cellule ou une plage de cellules avec un cas simple et un cas compliqué, c'est à dire avec la gestion des plages et paramètres en utilisant des balises.Citation:
'ai lu les liens dont tu me parle.
mais je ne vois pas en ce qui concerne la fonction recherche
Si tu sais utiliser la fonction RECHERCHEV, tu n'auras aucun mal après la lecture des liens d'utiliser cette fonction en VBA.
Je n'ai effectivement pas fait un exemple avec chacune des quelques 400 fonctions d'excel.
Si tu avais lu d'ailleurs convenablement ces billets, tu aurais utilisé sans doute la propriété Formula et pas FormulaR1C1 qui me semble moins simple à utiliser mais surtout, tu aurais éviter la méthode Select et l'objet Selection qui sont à proscrire en VBA.
Qu'entends-tu pas descendre d'une ligne ?Citation:
ainsi qu'une fois la recherche effectuee, descendre d'une ligne.
j'ai rectifier le code avec formula, ok
le code fonctionne, mais je ne sait pas comment
ecrire de descendre a la ligne suivante pr continuer.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Sub Macro1() ' Range("G12").Select ActiveCell.Formula = "=VLOOKUP(RC[-5],R[6]C[5]:R[11]C[10],6)" ActiveCell.Offset(0, -1).Activate ActiveCell.Formula = "=SUM(RC[-2]*RC[-1])" Range("d12").Select ActiveCell.Formula = "=VLOOKUP(RC[-2],R[6]C[9]:R[11]C[14],2)" ActiveCell.Offset(0, -1).Activate ActiveCell.Formula = "=VLOOKUP(RC[-1],R[6]C[9]:R[11]C[14],2)" With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With Do Until IsEmpty(ActiveCell) = True ActiveCell.Offset(1, 0).Activate Loop End Sub
Bonjour,
C'est bien ce que j'avais écrit, tu n'as pas lu les billets recommandés
Formule avec style de référence R1C1 où l'on utilise la propriété FormulaR1C1
et celle où l'on utilise la propriété FormulaCode:Range("G12").FormulaR1C1 = "=VLOOKUP(RC[-5],R[6]C[5]:R[11]C[10],6)"
et je répète pas besoin de Select et Selection, c'est parfaitement inutile et ralenti l'exécution du programme.Code:Range("G12").Formula = "=VLOOKUP(B12,L18:Q23,6)"
ok je n'avais pas tout rectifier.
le code fonctionne, mais je ne sait pas comment
ecrire de descendre a la ligne suivante pr continuer.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Sub Macro1() ' Range("G12").Select ActiveCell.Formula = "=VLOOKUP(B12,L18:Q23,6)" ActiveCell.Offset(0, -1).Activate ActiveCell.Formula = "=SUM(RC[-2]*RC[-1])" Range("d12").Select ActiveCell.Formula = "=VLOOKUP(B12,L18:Q23,4)" ActiveCell.Offset(0, -1).Activate ActiveCell.Formula = "=VLOOKUP(B12,L18:Q23,3)" With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With Do Until IsEmpty(ActiveCell) = True ActiveCell.Offset(1, 0).Activate Loop End Sub
Bonjour;
Je t'ai déjà posé la question au Post#6
Qu'entends-tu par descendre a la ligne suivante pr continuer ?
je souhaiterais que la macro passe en G13, execute
puis en G14 et ainsi de suite
Bonjour,
il fait chaud ici.
je pense que par descendre il sous entend d'appliquer sa formule sur plusieurs cellule d'une colonne.
après vu que crisjoce n'as pas répondu a ta question Philippe Tulliez je me contenterait de donner une forme grossière d'un résultat qui lui permettre de descendre les ligne(et *pan* la ligne) 8-).
Bien entendu les "select" sont à proscrire.
on ne traite ici que la colonne D a toi de t'inspirer de ça pour la colonne GCode:
1
2
3
4
5
6
7
8 y = 10 while cells(y,4) <> "" 'on descend les ligne tant que l'on ne tombe pas sur une ligne vide on traite uniquement la colone D Cells(y,4).Formula = "=VLOOKUP(B12,L18:Q23,4)" Cells(y,4).clear() ' et *pan* on descend la ligne Cells(y,3).Formula = "=VLOOKUP(B12,L18:Q23,3)" y = y + 1 wend
PS : il a finalement répondu avant mon poste xD
Bonjour,
Il faudrait être plus précis.Citation:
je souhaiterais que la macro passe en G13, execute
puis en G14 et ainsi de suite
Est-ce écrire une même formule sur plusieurs lignes ? Si oui lesquelle et la réponse est dans le billet que j'ai référencé
Est-ce écrire sur une ligne la formule dès que l'on a entré une donnée sur une colonne de cette même ligne, etc.
la formule de la macro demarre en G12, une fois executer la formule
je souhaiterais quelle s'applique sur plusieurs cellules d'une colonne
Pièce jointe 193601
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Sub Macro1() Range("G12").Select ActiveCell.Formula = "=VLOOKUP(B12,L18:Q23,6)" ActiveCell.Offset(0, -1).Activate ActiveCell.Formula = "=SUM(RC[-2]*RC[-1])" Range("d12").Select ActiveCell.Formula = "=VLOOKUP(B12,L18:Q23,3)" ActiveCell.Offset(0, -1).Activate ActiveCell.Formula = "=VLOOKUP(B12,L18:Q23,2)" With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With Do Until IsEmpty(ActiveCell) = True ActiveCell.Offset(1, 0).Activate Loop End Sub
Bonjour,
J'utilise aussi régulièrement les formules rechercheV dans des macros.
Voici un moyen d'étendre la formule a La dernière ligne d'un tableau.
A adapter suivant tes besoins :)Code:
1
2
3
4
5
6
7
8 'Formule Concatener 'Passe le format en "général" Sheets("Titu+Contr").Range("H2").NumberFormat = "General" 'Change le format de la cellule en réécrivant la cellule. Range("H2").FormulaR1C1 = "=RC[-4]&RC[-3]&RC[-2]&RC[-1]" 'Etend la formule jusqu'à la fin du tableau Range("H2").AutoFill Range("H2:H" & Range("A65536").End(xlUp).Row)
Aussi, peut tu essayer ce code :
J'ai enlevé les Select, mais j'ai laissé ton With avec la selection de la cellule D12.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Sub Macro1() With Application .ScreenUpdating = False .DisplayStatusBar = False .Calculation = xlCalculationManual End With Range("G12").Formula = "=VLOOKUP(B12,L18:Q23,6)" ActiveCell.Offset(0, -1).Formula = "=SUM(RC[-2]*RC[-1])" Range("d12").Formula = "=VLOOKUP(B12,L18:Q23,3)" ActiveCell.Formula = "=VLOOKUP(B12,L18:Q23,3)" ActiveCell.Offset(0, -1).Formula = "=VLOOKUP(B12,L18:Q23,2)" Range("D12").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With Do Until IsEmpty(ActiveCell) = True ActiveCell.Offset(1, 0).Activate Loop With Application .Calculation = xlCalculationAutomatic .DisplayStatusBar = True .CutCopyMode = False .ScreenUpdating = True .StatusBar = False End With End Sub
Bj stanler
je viens de regarder ton code, il ne se deroule pas comme celui que j'ai ecris
et de plus je suis oblige de cliquer a chaque foir sur le bouton.
je que je souhaiterais
recherche en B12 execute la macro, puis apres recheche en B13 et rexecute
la macro et ainsi de suite jusqu'a la derniere cellule oui il y a une valeur.
Sur quel bouton dois tu appuyer à chaque fois et à chaque fois qu'il se passe quoi ? Tu parles du débogage ?
Pourquoi souhaites tu rechercher la valeur en B12 et jusqu'à la fin du tableau ? N'est il pas plus simple d'appliquer une formule à tout ton tableau ?
Essaie ce code et dis nous ce qu'il en est.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Sub Macro1() With Application .ScreenUpdating = False .DisplayStatusBar = False .Calculation = xlCalculationManual End With Range("G12").FormulaR1C1 = "=VLOOKUP(RC[-5],R[6]C[5]:R[11]C[10],6)" Range("G12").AutoFill Range("G12:G" & Range("G65536").End(xlUp).Row) Range("F12").FormulaR1C1 = "=SUM(RC[-2]*RC[-1])" Range("F12").AutoFill Range("F12:F" & Range("F65536").End(xlUp).Row) Range("D12").FormulaR1C1 = "=VLOOKUP(RC[-2],R[6]C[9]:R[11]C[14],2)" Range("D12").AutoFill Range("D12:D" & Range("D65536").End(xlUp).Row) Range("C12").FormulaR1C1 = "=VLOOKUP(RC[-1],R[6]C[9]:R[11]C[14],2)" Range("C12").AutoFill Range("C12:C" & Range("C65536").End(xlUp).Row) Range("C12").HorizontalAlignment = xlCenter Range("C12").VerticalAlignment = xlCenter With Application .Calculation = xlCalculationAutomatic .DisplayStatusBar = True .CutCopyMode = False .ScreenUpdating = True End With End Sub
la macro s'arrete a la ligne 8
Peux tu nous transmettre ton fichier ? Ce serait plus simple pour nous afin de voir quelles lignes de codes on peut/doit utiliser :)
Sinon, comment est organisée ta feuille ? Y a t'il un tableau avec un nombre de lignes qui peut varier ? Pourquoi commençons nous la macro à la ligne 12 ?
Aussi, peux tu répondre à mes précédentes questions ? :roll:
voici le classeur, tu comprendra mieux mon besoin
cris