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
Hello
je vois que tu as changé pas mal de choses.. les fonctions sont devenues des procédures.
et pour la macro calculDateMoyenne, je ne vois nulle part comment tu l'appelles?

VB:
'a quel moment ce calcul est il lancé? par qui? comment?
Sub CalculDateMoyenne(Target As Range) 'target est censé etre quelle case?

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 = Target.Row 'début est sans doute le numéro de ligne de la cellule target..??
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(242, 242, 242)  'On rebondis de tableau en tableau jusqu'à tomber sur du gris
    fin = fin + 9
Wend

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
       
End Sub
et force toi à indenter ton code, tu gagneras en lisibilité et facilité de détecter les pb.
Voir commentaires dans le code
 

vgendron

XLDnaute Barbatruc
avec interprétation personnelle...
VB:
'a quel moment ce calcul est il lancé? par qui? comment?
Sub CalculDateMoyenne(Target As Range) 'target est censé etre quelle case?

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 = Target.Row 'début est sans doute le numéro de ligne de la cellule target..??
fin = debut
ref = 13

'on cherche le premier petit tableau du bloc par la détection de "Date de Valeur"
While Cells(debut, Target.Column) <> "Date de valeur"
    debut = debut - 1
Wend
debut = debut + 4

MsgBox Cells(debut, 13)
'on cherche le dernier petit tableau du bloc par la détection d'une cellule grise située dans le bloc suivant"
While Cells(fin + 9, Target.Column).Interior.Color = RGB(242, 242, 242)  'On rebondis de tableau en tableau jusqu'à tomber sur du gris
    fin = fin + 9
Wend

For i = debut To fin Step 9
    If Cells(i, ref) Then 'manque le test?? si il s'agit d'une affaire à prendre en compte ou pas? (. ou ..)
        nbredate = nbredate + 1
        somme = somme + Cells(i, ref)
    End If
Next i
If nbredate > 0 Then
    Cells(debut - 15, ref - 8).Select
    Selection = somme / nbredate 'Saisie dans les bonne cases     si il y a des affaires prises en compte
    Selection.NumberFormat = "m/d/yyyy"
Else
    Cells(debut - 15, ref - 8) = "" 'Saisie dans les bonne cases
End If
       
End Sub
 

vgendron

XLDnaute Barbatruc
Avec ce code, ca devrait fonctionner..
j'ai juste un pb avec le RGB(242,242,242)
selon si je clique sur la date du premier ou second tableau, ca fonctionne ou pas..
VB:
Sub CalculDateMoyenne(Target As Range) 'target est censé etre quelle case?

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 = Target.Row 'début est sans doute le numéro de ligne de la cellule target..??
fin = debut
ref = 13

'on cherche le premier petit tableau du bloc par la détection de "Date de Valeur"
While Cells(debut, Target.Column) <> "Date de valeur"
    debut = debut - 1
Wend
debut = debut + 4

'on cherche le dernier petit tableau du bloc par la détection d'une cellule grise située dans le bloc suivant"
While Cells(fin + 9, Target.Column).Interior.Color = RGB(242, 242, 242) 'On rebondis de tableau en tableau jusqu'à tomber sur du gris
    fin = fin + 9
Wend

For i = debut To fin Step 9
    If Cells(i + 3, 2) = "." Then 'manque le test?? si il s'agit d'une affaire à prendre en compte ou pas? (. ou ..)
        nbredate = nbredate + 1
        somme = somme + Cells(i, ref)
    End If
Next i
If nbredate > 0 Then
    Cells(debut - 15, ref - 8).Select
    Selection = somme / nbredate 'Saisie dans les bonne cases     si il y a des affaires prises en compte
    Selection.NumberFormat = "m/d/yyyy"
Else
    Cells(debut - 15, ref - 8).Select
    Selection = "" 'Saisie dans les bonne cases
End If
       
End Sub
 

MelissaJoubert

XLDnaute Junior
Bonjour Vgendron,

J'ai un petit problème sur mon macro,

If Target = "image" Then
Target.Offset(0, 10).Select
ad = Selection.Address
ficimg = Application.GetOpenFilename(".jpg,*.jpg", , "Choisissez l'image")
ActiveSheet.Pictures.Insert(ficimg).Select

With Selection.ShapeRange
.LockAspectRatio = False ' proportions d'origine lorsque vous la redimensionnez
.Top = Range(ad).Top ' haut de la cellule
.Left = Range(ad).Left ' gauche de la cellule
.Height = Range(ad).Height ' hauteur de la cellule
.Width = Range(ad).Width ' largeur de la cellule
End With
With Selection
.PrintObject = True ' l'objet est imprimé en même temps que le document
.Placement = xlMoveAndSize ' manière dont l'objet est lié aux cellules
End With
End If

J'avais ajouter ce macro pour quand je clique sur image a gauche, je vais chercher une image dans mon ordinateur que je place dans la cellule colonne L.

Mais il y a un petit beug, quand il y a la fenetrre qui s'affiche pour aller chercher mon image et quand je ferme cette fenetre sans mettre d'image j'ai un beug dans ma macro ?

Aurais-tu une solution s'il te plait :D !
Merci beaucoup
 

Pièces jointes

  • FINAL.xlsm
    76.3 KB · Affichages: 47

vgendron

XLDnaute Barbatruc
Hello

il faut ajouter un test sur ficimg
si tu ne selectionnes aucune image, ficimg = false.et donc. le reste du code bug. car il essaie de placer une image qui n'existe pas

modifie le code comme ceci
VB:
If Target = "image" Then
        Target.Offset(0, 10).Select
        ad = Selection.Address
        ficimg = Application.GetOpenFilename(".jpg,*.jpg", , "Choisissez l'image")
        If ficimg <> False Then
            ActiveSheet.Pictures.Insert(ficimg).Select
   
            With Selection.ShapeRange
                .LockAspectRatio = False        ' proportions d'origine lorsque vous la redimensionnez
                .Top = Range(ad).Top           ' haut de la cellule
                .Left = Range(ad).Left          ' gauche de la cellule
                .Height = Range(ad).Height  ' hauteur de la cellule
                .Width = Range(ad).Width ' largeur de la cellule
            End With
            With Selection
                .PrintObject = True             ' l'objet est imprimé en même temps que le document
                .Placement = xlMoveAndSize      ' manière dont l'objet est lié aux cellules
            End With
        End If
    End If
 

MelissaJoubert

XLDnaute Junior
Coucou! Laissons tomber le date moyenne c'est pas grave !
En revanche j'ai un problème car j'aimerai chnger la couleur du gris que j'ai mis lorsque j'appuis sur "." mais quand je change, les mise à jour du calculmoyenne ne marche pas bien et je comprend pas pourquoi ?

Par exemple actuellement j'ai la couleur gris qui est "248,248,248" et j'aimerai mettre un gris un peu plus foncer "242,242,242" donc logiquement en remplacant tout les 248 par 242 ça devrait marcher mais c'est pas le cas :(
Aurais tu une explication ??

Merci pour ton aide :D
 

Pièces jointes

  • FINAL - SOMMAIRE.xlsm
    82.3 KB · Affichages: 33

MelissaJoubert

XLDnaute Junior
Mais en faite je vois bien la différence sur mon excel quand je change la couleur.
Mais le problème c'est que quand je la change, mon calcul de la moyenne marche plus ? alors que j'ai juste changé la couleur.
Je pense avoir trouver le pb mais je sais pas comment le résoudre,
en faite les 2 cellule O25 et P25 quand je clique sur "." elles restent grise alors qu'elles devraient être blanche. Et quand je veux les mettre blanche ça beug :( je suis bloqué ahah !!
 

Discussions similaires

Statistiques des forums

Discussions
312 088
Messages
2 085 203
Membres
102 818
dernier inscrit
NeoMaint