Visual basic appliqmacro à toute une feuille

jéjéhand -  
michel_m Messages postés 18903 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

2 réponses

  1. melanie1324 Messages postés 1561 Statut Membre 156
     
    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
    1. 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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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