Visual basic appliqmacro à toute une feuille

Fermé
jéjéhand - 22 juil. 2011 à 16:07
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 25 juil. 2011 à 19:13
Bonjour,

J'ai une feuille excel, j'aimerais qu'une mise à jour soit effectuée à toutes les cellules de la feuille. pour le moment voila a quoi ressemble ma macro:

Sub MAJSAISIE Macro()
ActiveCell.FormulaR1C1 = _
"=IF(RC4<>"""",VLOOKUP(RC4,CONSTANTE!R8C1:R534C13,2,FALSE),"""")"
Range("E4").Select

End Sub

C'est comme si je faisais un double clique sur la cellule. Est-il possible de dupliquer cette formule à toute la feuille pour les cellules de la colonne E?

merci
A voir également:

2 réponses

melanie1324 Messages postés 1504 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
25 juil. 2011 à 14:56
bonjour,

de cette manière :

Sub MAJSAISIE Macro()
ActiveCell.FormulaR1C1 = _
"=IF(RC4<>"""",VLOOKUP(RC4,CONSTANTE!R8C1:R534C13,2,FALSE),"""")"
Range("E4").Select
selection.copy
range(cells(4,4),cells(60000,4)).select
activesheet.paste
Range("E4").Select
End Sub
0
merci pour ton aide, enfait voici mon code,
Sub MAJSAISIE()
ActiveCell.FormulaR1C1 = _
"=IF(RC4<>"""",VLOOKUP(RC4,CONSTANTE!R8C1:R534C13,2,FALSE),"""")"
Range("E4").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC4<>"""",VLOOKUP(RC4,CONSTANTE!R8C1:R534C13,2,FALSE),"""")"
Range("E5").Select
ActiveCell.FormulaR1C1 = _
"=IF(RC4<>"""",VLOOKUP(RC4,CONSTANTE!R8C1:R534C13,2,FALSE),"""")"
Range("E6").Select
End sub ()
Au lieu de faire toute les lignes, j'aimerai avoir le code qui actualise les lignes de 1 à n par exemple.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 26/07/2011 à 08:24
Bonjour

pourquoi écrire une formule ? est ce la valeur que tu recherches sous condition?

sinon pour recopier une formule pas la peine d'utiliser VBA....

dans quelle colonne veux tu les valeurs extraites

en attendant proposition de code avec restitution colonne F

Sub tasaisie()  
Dim derlig As Integer, cptr As Integer  
Dim dico As Object  
Dim ref, xxx  

Set dico = CreateObject("scripting.dictionary")  
'on crée un couple reférence (ref), valeur cherchée (xxx)  
With Sheets("constante")  
     For cptr = 8 To 31  
          ref = .Cells(cptr, "A")  
          xxx = .Cells(cptr, "B").Value  
          'évite les doublons  
          If Not dico.exists(ref) Then dico.Add ref, xxx  
     Next  
End With  

Application.ScreenUpdating = False 'fige le défilement de l'écran  
With Sheets(1)  
     derlig = .Range("E540").End(xlUp).Row  
     .Range("F3:F" & 540).ClearContents  
     'restitution  
     For cptr = 3 To derlig  
          ref = .Cells(cptr, "E")  
          'si la reference existe  
          If dico.exists(ref) Then  
               .Cells(cptr, "F") = dico(ref)  
          End If  
     Next  
End With  

End Sub


Evite au grand maximum les select-selection et les copy paste très lents et mangeurs de mémoire

Si tu veux d'autres explications, tu dis...
Michel
0