Formule Excel en VBA

Bonsoir à tous

j'ai commencé un tableur mais je but sur le problème suivant

j'aimerai que les formules en colonne "O ,Q , R ,S " s'arrête sur la ligne qui précède la ligne avec un A en colonne A.

Est-il possible d'avoir qu'un seul bouton "Calcul" , "Masquer", "Afficher", pour tous les onglets sur l'onglet menu.

13basevoiriefinale1.rar (199.39 Ko)

Salut le forum

Remplace tes sélections (Idem pour P, R et S)

Range("O3:O" & Lg-1)

Mytå

Bonsoir,

essaie comme ceci

Sub Formule()
    Dim Lg As Integer
        Application.ScreenUpdating = False
            On Error Resume Next
            ActiveSheet.ShowAllData 'libère les filtres
          On Error GoTo 0
        Lg = Cells.Find("*", , , , xlByRows, xlPrevious).Row - 1

        '--- formules Colonne O ---
Range("o3:o" & Lg) = "=" & _
        "IF(AND(K3="""",M3="""",A3=1),""Aucune intervention nécéssaire""," & _
        "IF(AND(M3<>"""",A3=1),LOOKUP(M3,CODE,TEXTE)," & _
        "IF(AND(A3=1,L3=""*""),LOOKUP(K3,CODE,TEXTE),"""")))"
Range("p3:p" & Lg) = "=" & _
        "IF(AND(k3="""",A3=1),""""," & _
        "IF(AND(A3=1,L3=""*""),LOOKUP(K3,CODE,UNITE)," & _
        "IF(AND(M3<>"""",A3=1),LOOKUP(M3,CODE,UNITE),"""")))"
Range("r3:r" & Lg) = "=" & _
        "IF(AND(k3="""",A3=1),""""," & _
        "IF(AND(A3=1,L3=""*""),LOOKUP(K3,CODE,PRIX)," & _
        "IF(AND(M3<>"""",A3=1),LOOKUP(M3,CODE,PRIX),"""")))"
Range("s3:s" & Lg) = "=" & _
        "IF(OR(Q3<>"""",R3<>""""),ROUND(Q3*R3,0),"""")"
    End Sub

Pour le bouton, il faudrait voir ce que tu veux

Amicalement

bonsoir,

merci a Mytä et à Dan.

Sur l'onglet "Nature Revêt" j'ai trois boutons qui lance les macros, j'avais l'intention de copier ces boutons sur chaque onglets pour activer les macros, par contre s'il est possible de réunir ces trois boutons sur l'onglet menu, je préférerai cela le problème et que j'ai aucune idée de comment faire, idem pour un bouton "efface donné" qui effacerai les données des colonnes A, M, O, P, Q, R, S entre la ligne 3 et la ligne avec un A en colonne A.

j'espère être clair dans mon explication, merci d'avance pour l'aide que vous pourriez m'apporter

Re,

c'est possible mais le clique sur le bouton "calcul" doit exécuter la macro formule dans toutes les feuilles ou dans une feuille de ton choix ?

Même question pour les autres boutons.

Autre question au sujet du "A" dans la colonne A. Pourquoi utilises-tu cette lettre ? Est-ce pour répérer la dernière ligne de ton tableau ?

A te relire

bonjour Dan!

Merci pour ton aide!

j'aimerai que le bouton "Calcul" se trouve sur l'onglet "Menu" et qu'il commande tous les onglet sauf les deux derniers "BudgetTotal et Tarif" et de même pour un bouton masquer ligne et afficher ligne.

Pour l'autre point oui le A sert de repère pour la dernier ligne des tableaux.

je te joins le fichier presque fini.

Pourrais-tu m'aider aussi sur une macro qui effacerait les données en colonne A entre la ligne 3 et le repère "A" , sur le même principe qui agirai sur tous les onglets sauf les deux derniers

je te joint un fichier ou j'ai retiré des onglets pour le poids du fichier.

13basevoirieessaie.xlsm (156.11 Ko)

re

Voici déjà le code pour la macro "Formule"

Sub Formule()
Dim Lg As Integer
Dim i As Byte
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Menu" And _
    Sheets(i).Name <> "BudgetTotal" And _
    Sheets(i).Name <> "Tarif" Then
With Sheets(i)
On Error Resume Next
    Sheets(i).ShowAllData 'libère les filtres
On Error GoTo 0
Lg = .Cells.Find("*", , , , xlByRows, xlPrevious).Row - 1

            '--- formules Colonne O ---
.Range("o3:o" & Lg) = "=" & _
            "IF(AND(K3="""",M3="""",A3=1),""Aucune intervention nécéssaire""," & _
            "IF(AND(M3<>"""",A3=1),LOOKUP(M3,CODE,TEXTE)," & _
            "IF(AND(A3=1,L3=""*""),LOOKUP(K3,CODE,TEXTE),"""")))"
.Range("p3:p" & Lg) = "=" & _
            "IF(AND(k3="""",A3=1),""""," & _
            "IF(AND(A3=1,L3=""*""),LOOKUP(K3,CODE,UNITE)," & _
            "IF(AND(M3<>"""",A3=1),LOOKUP(M3,CODE,UNITE),"""")))"
.Range("r3:r" & Lg) = "=" & _
            "IF(AND(k3="""",A3=1),""""," & _
            "IF(AND(A3=1,L3=""*""),LOOKUP(K3,CODE,PRIX)," & _
            "IF(AND(M3<>"""",A3=1),LOOKUP(M3,CODE,PRIX),"""")))"
.Range("s3:s" & Lg) = "=" & _
            "IF(OR(Q3<>"""",R3<>""""),ROUND(Q3*R3,0),"""")"
End With
End If
Next
End Sub

Je vois pour les masquages demandés car on peut se passer de ta lettre A.

Amicalement

Grand merci DAN!!!!!

c'est exactement ce que je voulais et cela fonction parfaitement.

Rechercher des sujets similaires à "formule vba"