XL 2010 Pb macro (valider ou non cellule)

MelissaJoubert

XLDnaute Junior
Bonjour à tous !!

J'ai à nouveau besoin de votre aide pour la création d'un macro :D

Je vous envoi mon fichier excel pour que vous compreniez mieux :)
(je vous conseil de l'ouvrir avant de lire la suite sinon vous allez rien comprendre je pense )

On va se préoccuper seulement de l'onglet "feuil1".
J'aimerai que lorsque je coche la case, le PU dans le tableau correspondant ne se compte pas dans le PU moyen "I6".

Exemple:
Si je coche la case du premier tableau "C14", le PU de la case " I13" ne va pas se comptabilisé dans mon PU moyen situé en I6.

J'espere que vous comprenez mon problème :p

Par contre en I6 j'ai mis une formule simple mais il me faudrait également un macro pour toujours m'ajouter les données rempli dans les cases PU car dans ma page je vais rajouter des petits tableaux donc il faudrait que mes prix s'ajoute à chanque fois.

Exemple : Si j'ajoute un tableau en cliquant sur "ajouter", quand je vais remplir ma case PU, la valeur que je vais rentrer doit être comptabilisé dans mon PU moyen automatiquement.

Merci à vous j'ai vraiment besoin de votre aide :) !!
 

Pièces jointes

  • test3.xlsm
    58.8 KB · Affichages: 32

vgendron

XLDnaute Barbatruc
et pour le PU moyen indépendant de chaque bloc.....
voir code et les commentaires pour comprendre
evidemment.. tu vas tout de suite voir que si tu modifies (meme légèrement) la structure de tes tableaux. il va falloir tout réadapter..
 

Pièces jointes

  • test10 Melissa.xlsm
    79.4 KB · Affichages: 35

vgendron

XLDnaute Barbatruc
hello

Et pour les renseignements de la feuil4 à la feuil2 t'a pu regarder ?

en fait non, et il faudrait que dans la version 10 que j'ai postée ici, tu remettes des datas.. parce que la feuille4 est vide
et que tu expliques plus précisemment quelles données doivent aller de où à où en fonction de quoi. (j'avais pas compris dans l'autre post)
 

MelissaJoubert

XLDnaute Junior
Bonjour,

J'ai à nouveau un petit soucie :D

j'envoi mon fichier excel pour mieux comprendre.

J'ai ajouter à mon code cette ligne :
'et on réécrit la formule en colonne N
formule1 = "=$N$" & maligne + 0
Range("N" & maligne + 3).FormulaLocal = formule1

Pour que quand je copie colle mon affaire, j'ai mon unité qui apparait et si je la modifie elle se modifie aussi.
Mon problème c'est que sur mon premier cadre (de référence), je n'arrive pas a associer mon u a ma case ....
ça marche pour le premier bloc mais quand j'en copie un autre, il prend toujours ma cellule "N20" comme référence...

J'ai besoin de votre aide :D (Vgendron j'espere que tu va répondre)
Merci !!
 

Pièces jointes

  • test12 Melissa.xlsm
    72.2 KB · Affichages: 31

vgendron

XLDnaute Barbatruc
Hello

voir PJ
le problème vient du fait que le $N$20 est valable pour le bloc de référence qui est masqué
lorsque celui ci est copié, ca garde $N$20 en référence. au lieu de reprendre la nouvelle ligne
---> il faut donc réajuster la formule pendant la copie du bloc: cf macro copie grand cadre
 

Pièces jointes

  • test13 Melissa.xlsm
    66 KB · Affichages: 30

MelissaJoubert

XLDnaute Junior
Super merci !! Je savais qui fallait que je rajoute un code sur le grand cadre mais j'arrivais pas à trouver quoi !
En tout cas grace a toi je me suis beaucoup amélioré!!!
Autre petit détail, je n'arrive pas à calculer la moyenne des dates dans la cellule D9

J'ai fais un programme mais il marche pas :

Sub calculdatemoyenne(Target As Range)
Dim debut As Integer
Dim fin As Integer
Dim datemoyen As Double
Dim ref As Integer
Dim nbredate As Integer
Dim somme As Double

somme = 0
nbredate = 0
debut = ad
fin = debut
ref = 13

While Cells(debut, Target.Column) <> "Date de valeur"
debut = debut - 1
Wend
debut = debut + 6

While Cells(fin + 9, Target.Column).Interior.Color = RGB(248, 248, 248) 'On rebondis de tableau en tableau jusqu'à tomber sur du gris
fin = fin + 9

For i = debut To fin Step 9

If Cells(i, ref) Then
nbredate = nbredate + 1
somme = somme + Cells(i, ref)
End If

Next
If nbredate > 0 Then
Cells(debut - 15, ref - 8) = somme / nbredate 'Saisie dans les bonne cases si il y a des affaires prises en compte
Else
Cells(debut - 15, ref - 8) = "" 'Saisie dans les bonne cases
End If


End Sub
 

vgendron

XLDnaute Barbatruc
Hello

1) déjà il manque un wend: utilises l'indentation du code (décalage vers la droite) pour éviter ce genre d'oubli
VB:
Sub calculdatemoyenne(Target As Range)
Dim debut As Integer
Dim fin As Integer
Dim datemoyen As Double
Dim ref As Integer
Dim nbredate As Integer
Dim somme As Double

somme = 0
nbredate = 0
debut = ad
fin = debut
ref = 13

While Cells(debut, Target.Column) <> "Date de valeur"
    debut = debut - 1
Wend
debut = debut + 6

While Cells(fin + 9, Target.Column).Interior.Color = RGB(248, 248, 248) 'On rebondis de tableau en tableau jusqu'à tomber sur du gris
    fin = fin + 9
    For i = debut To fin Step 9
        If Cells(i, ref) Then
            nbredate = nbredate + 1
            somme = somme + Cells(i, ref)
        End If
    Next i
    If nbredate > 0 Then
        Cells(debut - 15, ref - 8) = somme / nbredate 'Saisie dans les bonne cases si il y a des affaires prises en compte
    Else
        Cells(debut - 15, ref - 8) = "" 'Saisie dans les bonne cases
    End If
Wend 'CELUI QUI MANQUAIT
End Sub

2) comment et où appelles tu cette macro?
ne confonds tu pas avec une fonction? comme celle que j'ai écrite pour le pumoyen

3) qu'est elle censée calculer? dans quelle cellule vas tu l'écrire?
 

vgendron

XLDnaute Barbatruc
Voir ici avec les commentaires
je pense que si tu réponds aux questions, tu devrais y voir plus clair de pourquoi ca marche pas
VB:
Function CalculDateMoyenne(Target As Range) 'la target correspond à quoi? qu'ecris tu dans excel?: =CalculDateMoyenne(???)
Application.Volatile
Dim debut As Integer
Dim fin As Integer
Dim datemoyen As Double
Dim ref As Integer
Dim nbredate As Integer
Dim somme As Double

somme = 0
nbredate = 0
debut = ad 'c'est quoi ad?? ca vient d'ou?
fin = debut
ref = 13 'pour la colonne M

While Cells(debut, Target.Column) <> "Date de valeur" 'ici debut n'est pas initialisé.. et il est vide ou 0
'et cells(0,..) Excel n'aime pas
    debut = debut - 1
Wend
debut = debut + 6

While Cells(fin + 9, Target.Column).Interior.Color = RGB(248, 248, 248) 'On rebondis de tableau en tableau jusqu'à tomber sur du gris
    fin = fin + 9
Wend 'le wend manquant est peut etre plutot ici

    For i = debut To fin Step 9
        If Cells(i, ref) Then
            nbredate = nbredate + 1
            somme = somme + Cells(i, ref) 'bizarre comme calcul. ajouter des dates entre elles..
        End If
    Next i
    If nbredate > 0 Then
        'Saisie dans les bonne cases si il y a des affaires prises en compte: Ref-8 = Colonne D
        Cells(debut - 15, ref - 8) = somme / nbredate 'moyenne de date???
    Else
        Cells(debut - 15, ref - 8) = "" 'Saisie dans les bonne cases
    End If

End Function
 

MelissaJoubert

XLDnaute Junior
comment et où appelles tu cette macro?

J'ai mis ce code dans ma page feuil2

qu'est elle censée calculer? dans quelle cellule vas tu l'écrire?
Elle est censé calculé la moyenne de toute les dates du grand bloc, je l'écris dans la cellule D9

Merci beaucoup pour tes commentaires je vais l'essayer et je te dirais si il marche :D
 

vgendron

XLDnaute Barbatruc
Hello
et du coup, tu l'appelles comment et ou?
quand ca bug, vérifie que début contient bien autre chose que 0...


Et je ne comprend toujours pas le principe de calculer une moyenne de dates..
une moyenne de nombre de jours, ou de nombre de mois, ok. mais des dates..
je ne vois pas à quoi ca peut correspondre
 

MelissaJoubert

XLDnaute Junior
C'est vrai qu'une moyenne de date ce n'est pas très logique et très précis mais bon je suis en stage et on me demande de mettre la date moyenne ....

Tu veux pas que je t'envoi mon fichier et que tu regarde directement dessus ça sera plus simple je pense non ? :)
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin