IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Ma macro m'écrase les formule dans la feuille base de donnée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 36
    Par défaut Ma macro m'écrase les formule dans la feuille base de donnée
    Bonjour à tous,
    Voilà je suis débutant et j'ai besoin de votre aide SVP.
    j’exécute une macro de clacul simple à partir d'une feuille source qui contient mes donnée et dont quelques cellules contiennent des formules, mais en exécutant cette macro les formule disparaissent
    ci joint mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    Sub calcul1()
    'Macro calcul 
    Dim nb_max_ligne As Integer
    Dim nb_max_col As Integer
    Dim i As Integer, j As Integer
    Dim valeur As String
    dim pr as String, cm as String
    Dim pr1 As String, cm1 as String
    Dim pr2 As String, cm2 as String
    Dim colonne
    Dim w_plage As Range, ws_plage As Range
    Dim w_tab
    Dim ws_tab
    Dim w As Worksheet
    Dim ws As Worksheet
    Set ws = Worksheets("dépenses")     'feuille source de donnée ou les formule diparaissent 
    Set w = Worksheets("calcul")          'feuille de destination ou se fait le calcul
    Set ws_plage = ws.Range("A1:FB1000")
    Set w_plage = w.Range("A1:GA11")
     
    nb_max_col = Application.CountA(ws.Rows(2))    'compter le nombre des colonnes
    nb_max_ligne = Application.CountA(ws.Columns(9))    'compter le nombre des lignes
    Range(w.Range("A2").Offset(0, 1), w.Range("A2").End(xlToRight)).ClearContents               'Effacer les anciennes valeurs pour faire le calcul selon les nouvelles valeurs
    Range(w.Range("A3").Offset(0, 1), w.Range("A3").End(xlToRight)).ClearContents              'Effacer les anciennes valeurs pour faire le calcul selon les nouvelles valeurs
    Range(w.Range("A4").Offset(0, 1), w.Range("A4").End(xlToRight)).ClearContents
    Range(w.Range("A5").Offset(0, 1), w.Range("A5").End(xlToRight)).ClearContents
    Range(w.Range("A6").Offset(0, 1), w.Range("A6").End(xlToRight)).ClearContents
    Range(w.Range("A7").Offset(0, 1), w.Range("A7").End(xlToRight)).ClearContents
    Range(w.Range("A8").Offset(0, 1), w.Range("A8").End(xlToRight)).ClearContents
     
    w_tab = w_plage
    ws_tab = ws_plage
              For i = 3 To nb_max_ligne
    valeur = ws_tab(i, 9)
    pr1 = ws_tab(i - 1, 6)   'Se positionner sur la colonne produit pour lire la valeur dedans 
    pr2 = ws_tab(i - 2, 6)   'Se positionner sur la colonne produit pour lire la valeur dedans
    pr = ws_tab(i, 6)
    cm = ws_tab(i, 1)                               'lire la valeur dans la colonne commerçant
    cm1 = ws_tab(i - 1, 1)
    cm2 = ws_tab(i - 2, 1)
     
        For j = 10 To nb_max_col
     
        If valeur = "estimation" And pr = UserForm1.choix_produit And cm = UserForm1.choix_commercant Then
     
        w_tab(2, j - 8) = w_tab(2, j - 8) + ws_tab(i, j)
        End If
     
        If valeur = "réel" And pr1 = UserForm1.choix_produit And cm1 = UserForm1.choix_commercant Then
     
     
         w_tab(4, j - 8) = w_tab(4, j - 8) + ws_tab(i, j)     'Calcul valeurs estimation
        End If
     
        If valeur = "Reste" And pr2 = UserForm1.choix_produit And cm2 = UserForm1.choix_commercant Then
     
         w_tab(6, j - 8) = w_tab(6, j - 8) + ws_tab(i, j)           'Calcul Valeurs réel
     
        End If
        w_tab(3, 2) = w_tab(2, 2)
        w_tab(3, j - 7) = w_tab(3, j - 8) + w_tab(2, j - 7) 'calcul cummulé estimation
     
        w_tab(5, 2) = w_tab(4, 2)
        w_tab(5, j - 7) = w_tab(5, j - 8) + w_tab(4, j - 7)   ' calcul  cumulé reel
     
        w_tab(7, 2) = w_tab(6, 2)
        w_tab(7, j - 7) = w_tab(7, j - 8) + w_tab(6, j - 7)    'calcul cumulé reste
     
        If w_tab(4, j - 8) <> 0 Then             
    w_tab(8, j - 8) = w_tab(6, j - 8) / w_tab(4, j - 8)
    Else: w_tab(8, j - 8) = 0
    End If
        Next j
     
     
     
     Next i
     
     
     
    w_plage = w_tab
    ws_plage = ws_tab
     
    Set w = Nothing
    Set ws = Nothing
    End Sub

    je suis sur que la manipulation ws_plage=ws.range("A1:FB1000")
    ws_tab=ws_plage et à la fin ws_plage=ws_tab me fait perdre mes formules de calcul mais je l'utilise pour optimiser le temps de calcul.
    Est-ce que vous avez quelque chose à proposer pour résoudre ce problème SVP
    Merci d'avance

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par mxitzny Voir le message
    quelques cellules contiennent des formules
    Quelles cellules ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 36
    Par défaut
    il y a des cellules dans ma feuille dépenses qui contiennent des formules de calcules.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Dans quelles cellules ? (c'est pourtant une question simple, non ?)

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 36
    Par défaut
    C'est un peu éparpillé ce n'est pas un range spécifique et bien défini

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    les formules ne sont pas des constantes
    Constitue donc la plage des constantes et fais-en ce que tu veux. Tu ne toucheras ainsi aucunement aux cellules contenant des formules.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim plage As Range
    Set plage = Cells.SpecialCells(xlCellTypeConstants)
    plage.ClearContents
    n'effacera que les cellules contenant des constantes et laissera intactes les formules

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Macro pour supprimer les espaces dans les cellules
    Par ab1to dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/11/2009, 16h25
  2. Masquer les formules dans Excel 2007
    Par ruru9 dans le forum Excel
    Réponses: 1
    Dernier message: 08/01/2008, 15h43
  3. [Formule]Macro pour masquer des formules dans une cellule
    Par Hellx dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/04/2007, 08h21
  4. [VBA] Macro qui envoie une formule dans une cellule
    Par Okoss dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/04/2007, 22h32
  5. [Excel] Insertion de formule dans ma feuille par macro (erreur400)
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/02/2007, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo