Visual basic appliqmacro à toute une feuille

jéjéhand -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Membre Dernière intervention   155
 
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
jéjéhand
 
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 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
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