Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1633 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro sans bouton

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Macro sans bouton

n°1326851
zaina
Posté le 16-03-2006 à 17:28:50  profilanswer
 

Bonjour,
 
Je débute en excel et je suis sur un projet un peu compliqué. Je voudrai faire une macro avec woorksheet_change qui à chaque fois qu'une valeur est saisie dans une cellule a elle calcule la cellule b et vise versa.
 
Pour celà, j'ai mis en place ce code:
 
Private Sub worksheet_change(ByVal target As Range)
Dim a As Integer
 
For a = 18 To 39
If ActiveSheet.Cells(a, 4).Value <> "" Then
    If ActiveSheet.Cells(a, 5).Value <> "" Then
    ActiveSheet.Cells(a, 7).Value = ActiveSheet.Cells(a, 5).Value * ActiveSheet.Cells(a, 12).Value
    End If
End If
Next
End Sub
 
 
Mon problème c'est que ma macro elle marche pour une ligne mais pas pour les autre 21 lignes?
 
Quelqu'un pourrait il m'aider svp

mood
Publicité
Posté le 16-03-2006 à 17:28:50  profilanswer
 

n°1326891
watashi
La démotivation : JAMAIS !
Posté le 16-03-2006 à 18:22:22  profilanswer
 

Salut zaina,
 

zaina a écrit :

Je voudrai faire une macro avec woorksheet_change qui à chaque fois qu'une valeur est saisie dans une cellule a elle calcule la cellule b et vise versa.

Worksheet_change est effectivement le bon endroit pour celà.  
Mais, ton code ici :

Code :
  1. Private Sub worksheet_change(ByVal target As Range)
  2. Dim a As Integer
  3. For a = 18 To 39
  4. If ActiveSheet.Cells(a, 4).Value <> "" Then
  5.     If ActiveSheet.Cells(a, 5).Value <> "" Then
  6.     ActiveSheet.Cells(a, 7).Value = ActiveSheet.Cells(a, 5).Value * ActiveSheet.Cells(a, 12).Value
  7.     End If
  8. End If
  9. Next
  10. End Sub


me fais penser à une simple multiplication. Pourquoi n'utilises-tu pas les formules directement dans ta feuille excel. exemple en G18:  '=E18*L18'
Si vraiment tu veux utiliser une macro plutôt que des formule ok.
Tu peux toujours essayer d'ajouter un a après le next si c'est pas ça essaye de mieux définir ce que tu cherches à faire :
1- quelles plages de cellules ont une influence sur le resultat limiter le target evite de bonnes lenteurs
2- pourquoi un test de valeur vide sur la colonne 4
3- faut-il vraiment que tu recalcules toutes les lignes de 18 à 39 à chaque changement?
 
@+
 
Edit : tu trouvera ici un exemple de sub worksheet_change qui te montrear comment limiter les plages.


Message édité par watashi le 16-03-2006 à 18:26:32

---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1326903
zaina
Posté le 16-03-2006 à 18:34:09  profilanswer
 

Merci pour ta reponse watashi.
 
je ne veux pas mettre de formule dans les cellules car les deux colonnes 5 et 7 sont liés. Si je met une formule elle sera ecrasé quand je saisierai un chiffre. Exemple si je met une valeur dans la colonne 5, la formule dans la colonne 7 me donnera les valeurs de la 7. Par contre si je met une valeur dans la colonne 7 celle ci ecrasera ma formule et ne me calculera pas la valeur de la colonne 5. delà, la macro reste mon seul recours.
 
J'ai mis un test de valeur vide sur la colonne 4 pour effectivement ne pas effectuer le calcul sur toutes les lignes de 18 à 39 mais juste sur celle ayant une de valeur.
 
Est ce que tu pense que ce que je veux faire est faisable. :(  
 
Merci for help

n°1327179
watashi
La démotivation : JAMAIS !
Posté le 17-03-2006 à 09:52:37  profilanswer
 

Salut zaina,
ce que tu veux faire est totu a fait faisable quoi que surement un peu plus complexe qu tu ne le pensais au départ
tu trouveras ci dessous un code commenté qui te fais ce que j'ai compris de ton enonncé :
à savoir :
1- si tu saisis en colonne 5 alors en colonne 7 tu as colonne 5*colonne 12
2- si tu saisis en colonne 7 alors en colonne 5 tu as colonne 7 * colonne 12
Il faut noter 2 choses : a chaque fois que tu change 1 cellule dans ta feuille la sub worksheet_change tourne. donc si tu modifie la colonne 7 par macro ta sub tourne et tu risque d'avoir une boucle infinie de cacul. il y a donc à se méfier. Par ailleurs si tu change ta colonne 12 ton résultat change.

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. ' variables
  3. Dim Resultat As Long
  4. 'limiter l'action au changements sur les lignes 18 à 39
  5. If Target.Row >= 18 And Target.Row <= 39 Then
  6.    
  7.     'Si la valeur en colonne 5 change
  8.     If Target.Column = 5 Then
  9.         'Calcul du résultat que tu aurais en colone 5 si la saisie était en colone 7
  10.         Resultat = Cells(Target.Row, 7).Value * Cells(Target.Row, 12).Value
  11.         'tu verifie que ce que tu as dans cette cellule est différent du résultat attendu
  12.         If Target.Value <> Resultat Then
  13.         'Si le resultat est différent c'est que tu as saisis
  14.         'donc tu change la valeur en colone 7
  15.             Cells(Target.Row, 7).Value = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
  16.         'sinon tu ne change pas ta valeur car elle correspond au résultat
  17.         End If
  18.     End If
  19.    
  20.     'Si la valeur en colonne 7 change
  21.     If Target.Column = 7 Then
  22.         'Calcul du résultat que tu aurais en colone 7 si la saisie était en colone 5
  23.         Resultat = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
  24.         'tu verifie que ce que tu as dans cette cellule est différent du résultat attendu
  25.         If Target.Value <> Resultat Then
  26.         'Si le resultat est différent c'est que tu as saisis
  27.         'donc tu change la valeur en colone 7
  28.             Cells(Target.Row, 5).Value = Cells(Target.Row, 7).Value * Cells(Target.Row, 12).Value
  29.         ' Sinon tu ne change pas ta valeur car elle correspond au résultat
  30.         End If
  31.     End If
  32.    
  33.     'Attention si ta valeur en colonne 12 change il faut aussi que tu revois ton résultat
  34.     If Target.Column = 12 Then
  35.         If Cells(Target.Row, 5).Value = Cells(Target.Row, 7).Value Then
  36.         ' colonne 5 = colonne 7 donc forcement 0
  37.         ' tu ne fais rien
  38.         End If
  39.         If Cells(Target.Row, 5).Value > Cells(Target.Row, 7).Value Then
  40.         ' colonne 5 > colonne 7 donc forcement 5=7*12
  41.         ' tu changes la colonne 5
  42.               Cells(Target.Row, 5).Value = Cells(Target.Row, 7).Value * Cells(Target.Row, 12).Value
  43.         End If
  44.         If Cells(Target.Row, 5).Value < Cells(Target.Row, 7).Value Then
  45.         ' Colonne 5 < colonne 7 donc forcement 7=5*12
  46.         ' Tu changes la colonne 7
  47.               Cells(Target.Row, 7).Value = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
  48.         End If
  49.     End If
  50. End If
  51. End Sub


A toi de voir si tu arrives a formaliser grâce à celà ton problème exact.
@+


Message édité par watashi le 17-03-2006 à 09:54:05

---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1331622
zaina
Posté le 24-03-2006 à 12:07:47  profilanswer
 

Salut Watashi :hello:  
 
Merci pour ta réponse j'ai beaucoup avancé grace à toi.  :jap: j'ai remodifié le code de tel sorte à ce que ca s'adapte à ma requete.
 et ca donne ça:
 
Private Sub Worksheet_Change(ByVal Target As Range)
Dim result As Long
 
If Target.Row >= 19 And Target.Row <= 39 Then
 
    If Cells(Target.Row, 12).Value = 0 Then
    End If
     
    If Cells(Target.Row, 12).Value = "na" Then
    End If
     
    If Cells(Target.Row, 12).Value <> 0 Then
     
    If Target.Column = 5 Then
    result = Cells(Target.Row, 7).Value / Cells(Target.Row, 12).Value
        If Target.Value <> result Then
        Cells(Target.Row, 7).Value = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
        End If
    End If
     
    If Target.Column = 7 Then
    result = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
        If Target.Value <> result Then
        Cells(Target.Row, 5).Value = Cells(Target.Row, 7).Value / Cells(Target.Row, 12).Value
        End If
    End If
 
    If Target.Column = 12 Then
        If Cells(Target.Row, 12).Value = Cells(Target.Row, 7).Value * Cells(Target.Row, 5).Value Then
        End If
        If Cells(Target.Row, 12).Value <> Cells(Target.Row, 5).Value * Cells(Target.Row, 7).Value Then
        Cells(Target.Row, 5).Value = Cells(Target.Row, 7).Value * Cells(Target.Row, 12).Value
        End If
    End If
     
    End If
End If
End Sub
 
la ce qui me gene c'est lorsque je tente de supprimer toute les valeur dans les cellules en question ( colonne 5 et 7) j'ai un message d'erreur car il n' y a plus de valeur dedans.
 
Est ce que tu aurais une petite idée pour eviter ce message d'erreur?
 
Pourquoi VBA n'arrive pas à reconnaitre le "na".
 
Meci d'avance
 
Zaina

n°1331630
watashi
La démotivation : JAMAIS !
Posté le 24-03-2006 à 12:17:55  profilanswer
 

Salut zaina,
Je vais regarder un peu plus tard ton code mais ouurais-tu éditer ton message avec les balise de code s'il te plait c'est vraiment dur à lire ainsi.
Petite question : le na dont tu parle c'est celui d'excel (renvoyé en cas d'erreur) ou c'est toi qui le saisi ?
Quel message d'erreur as-tu quand tu vide les cellules ?
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1331634
zaina
Posté le 24-03-2006 à 12:23:58  profilanswer
 

Excuse moi pour les balises de code recommencerai pas. :pt1cable:  
 
Pour le na c'est moi qui le met. c'est la valeur de la cellule ( x,12) si jamais la cellule ( x,4) = " Moyenne" ou " Equivalent".  
 
le message d'erreur que je recois : " run time error 13 mistake ùmatch".
 
Merci d'avance  :jap:  

n°1331697
watashi
La démotivation : JAMAIS !
Posté le 24-03-2006 à 13:53:11  profilanswer
 

zaina a écrit :

   If Cells(Target.Row, 12).Value = 0 Then
    End If
     
    If Cells(Target.Row, 12).Value = "na" Then
    End If


Salut zaina,
tes 2 tests ici ne sont pas pris en compte et je pense que c'est ce qui te fais bugger sur le 0 ou le "na".
essaye en enlevant les 2 end if pour les placer juste avant le end sub :)
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1331716
zaina
Posté le 24-03-2006 à 14:07:35  profilanswer
 

:cry: oui mais il ne me fait plus le calcule d'avant..... :cry:

n°1331727
zaina
Posté le 24-03-2006 à 14:20:25  profilanswer
 

Voilà j'ai trouvé une solution pour mon probleme de "na". J'ai mit en place une colonne dédié au calcul et qui à chaque choix que la cellule (x,12) contient na moi j'ai 0.
 
 :pt1cable: et ca marche
 
C'est chouette :bounce:  
 
Reste le premier beug....
 
 
Merci muchos muchos

mood
Publicité
Posté le 24-03-2006 à 14:20:25  profilanswer
 

n°1331739
watashi
La démotivation : JAMAIS !
Posté le 24-03-2006 à 14:28:15  profilanswer
 

Re zaina :)
Je pense avoir une idée :)
Ton calcul en fait tu ne dois le faire que si  cells(#,12) est différent de vide, 0 ou na ?
si oui essayes avec ce code :

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim result As Long
  3. If Target.Row >= 19 And Target.Row <= 39 Then
  4.     If Cells(Target.Row, 12).Value <> 0 Or _
  5.         Cells(Target.Row, 12).Value <> "na" Or _
  6.         Cells(Target.Row, 12).Value <> "" Then
  7.               Select Case Target.Column
  8.                   Case Is = 5
  9.                         result = Cells(Target.Row, 7).Value / Cells(Target.Row, 12).Value
  10.                         If Target.Value <> result Then
  11.                               Cells(Target.Row, 7).Value = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
  12.                         End If
  13.                   Case Is = 7
  14.                         result = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
  15.                         If Target.Value <> result Then
  16.                                Cells(Target.Row, 5).Value = Cells(Target.Row, 7).Value / Cells(Target.Row, 12).Value
  17.                         End If
  18.                   Case Is = 12
  19.                         If Cells(Target.Row, 12).Value <> Cells(Target.Row, 5).Value * Cells(Target.Row, 7).Value Then
  20.                               Cells(Target.Row, 5).Value = Cells(Target.Row, 7).Value * Cells(Target.Row, 12).Value
  21.                         End If
  22.               End Select
  23.    
  24.     End If
  25. End If
  26. End Sub

@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1331750
watashi
La démotivation : JAMAIS !
Posté le 24-03-2006 à 14:39:57  profilanswer
 

zaina a écrit :

Voilà j'ai trouvé une solution pour mon probleme de "na". J'ai mit en place une colonne dédié au calcul et qui à chaque choix que la cellule (x,12) contient na moi j'ai 0.
 
 :pt1cable: et ca marche
 
C'est chouette :bounce:  
 
Reste le premier beug....
 
 
Merci muchos muchos

;)
Je viens de relire e pensant à ton premier bug...

Code :
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. Dim result As Long
  3. If Target.Row >= 19 And Target.Row <= 39 Then
  4.     If Target.column = 5 Or Target.column = 7 Or Target.column = 12 Then
  5.         If Target.Value = "" Then exit sub   'Si tu est en train de vider le cellule alors ça sort
  6.         If Cells(Target.Row, 12).Value <> 0 Or _
  7.             Cells(Target.Row, 12).Value <> "na" Then
  8.               Select Case Target.Column
  9.                   Case Is = 5
  10.                         result = Cells(Target.Row, 7).Value / Cells(Target.Row, 12).Value
  11.                         If Target.Value <> result Then
  12.                               Cells(Target.Row, 7).Value = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
  13.                         End If
  14.                   Case Is = 7
  15.                         result = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
  16.                         If Target.Value <> result Then
  17.                                Cells(Target.Row, 5).Value = Cells(Target.Row, 7).Value / Cells(Target.Row, 12).Value
  18.                         End If
  19.                   Case Is = 12
  20.                         If Cells(Target.Row, 12).Value <> Cells(Target.Row, 5).Value * Cells(Target.Row, 7).Value Then
  21.                               Cells(Target.Row, 5).Value = Cells(Target.Row, 7).Value * Cells(Target.Row, 12).Value
  22.                         End If
  23.               End Select
  24.    
  25.     End If
  26.     End If
  27. End If
  28. End Sub

@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1334766
zaina
Posté le 29-03-2006 à 17:28:28  profilanswer
 

J'ai trouvé la solution mais maintenant, ma macro ne sais pas reconnaitre le #N/A d'excel  
 
Tu n'aurais pas une idée de génie?...... :sweat:

n°1334787
watashi
La démotivation : JAMAIS !
Posté le 29-03-2006 à 17:54:22  profilanswer
 

Gnarf, tu m'avais dis que c'était toi qui le mettait...
 
j'ai jamais eu à gérer avec le #N/A, prends une cellule ou tu as ce retour et demande la valeur que VBA te renvois, en fonction tu pourras ajouter un critère. Sinon quelqu'un d'autre pourra peut être t'aider en faisant un nouveau post :)
 
@+


---------------
Je bidouillle c'est sur... Mais j'essaye de faire en sorte que ça marche ;-)
n°1334789
zaina
Posté le 29-03-2006 à 18:03:28  profilanswer
 

Merci c'est gentil de repondre aussi vite.
 
En fait il y a deux na , le mien et celui d'excel. Au debut je pensais gerer juste le mien mais maintenant il va valoir les gerer les deux. :pt1cable:  
 
Ma macro qui marche la voici si ca peut aider d'autre personne. :jap:  
 

Spoiler :

[Private Sub Worksheet_Change(ByVal Target As Range)
Dim result As Long
 
If Target.Row >= 19 And Target.Row <= 39 Then
     
    If Cells(Target.Row, 12).Value = 0 Then
        If Cells(Target.Row, 5).Value <> "" Then
        Cells(Target.Row, 5).Value = ""
        End If
        If Cells(Target.Row, 7).Value <> "" Then
        Cells(Target.Row, 7).Value = ""
        End If
    End If
     
    If Cells(Target.Row, 12).Value = "na" Then
    Exit Sub
    End If
   
     
    If Cells(Target.Row, 12).Value > 0 And Cells(Target.Row, 12).Value <> "na" And Cells(Target.Row, 5).Value <> 0 Or Cells(Target.Row, 7).Value <> 0 Then
     
        If Target.Column = 7 Then
        result = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
            If Target.Value <> result Then
            Cells(Target.Row, 5).Value = Cells(Target.Row, 7).Value / Cells(Target.Row, 12).Value
            End If
        End If
       
         
        If Cells(Target.Row, 12).Value <> Cells(Target.Row, 7).Value / Cells(Target.Row, 5).Value Then
        Cells(Target.Row, 7).Value = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
        End If
'        
'        
'        If Target.Column = 5 Then
'        result = Cells(Target.Row, 7).Value / Cells(Target.Row, 12).Value
'            If Target.Value <> result Then
'            Cells(Target.Row, 7).Value = Cells(Target.Row, 5).Value * Cells'(Target.Row, 12).Value
'            End If
'        End If
'
'    End If
'End If
'End Sub]


 
 
Dans tout les cas merci pour les reponse rapide. dès que je trouve une solution au na excel je vous tiendrai au courant.
 
NB: Je ne sais pas mettre le code en blanc
 
Zaina

n°1334815
juju2k
Posté le 29-03-2006 à 18:37:07  profilanswer
 

Pour mettre un bloc de code en fixe, clique sur le bouton Fixe, et non "Spoiler" ;)
 
Bref...
 
Pour en revenir à ton problème de #N/A : en fait, une cellule affiche #N/A lorsque la fonction qui est associée n'est pas réalisable. Ce #N/A n'est pas la valeur contenue dans la cellule, mais c'est Excel qui affiche ceci pour avertir l'utilisateur.
Ainsi, si tu essayes de rentrer la valeur de cette cellule dans une variable numérale ou de l'utiliser en tant que nombre, Excel te fera une erreur.
 
Une solution simple consiste à tester en tout premier lieu si la valeur de la cellule est de type numérique grâce à la fonction IsNumeric()
 
Exemple :

If IsNumeric(Cells(1, 1).Value) = True Then
    MsgBox "La valeur de la cellule est un nombre..."
Else
    MsgBox "Valeur non numérique !"
End If


Dans ton cas, si la fonction IsNumeric() renvoie True, tu exécutes tes instructions de calcul. Sinon, tu sors de la macro, ou tu avertis l'utilisateur (à toi de voir).
 
;)


Message édité par juju2k le 29-03-2006 à 18:41:07
n°1336155
zaina
Posté le 31-03-2006 à 11:08:10  profilanswer
 

Merci beaucoup pour ta reponse je vais essayer. :jap:  
 
Gracias
 

n°1338905
zaina
Posté le 04-04-2006 à 16:26:35  profilanswer
 

Bonjour
 
j'ai un petit probleme avec ma macro. elle marche à laperfection le problème est que lorseque je supprime la place de la colone 5 à 7 et que je refait un return back pour reprendre ou j'etais avant, j'ai un message d'erreur qui s'affiche  
 
" Run-time error 13
type mismatch"
 
Mon code est:
 
NB: en rouge l'emplacement de l'erreur

Private Sub Worksheet_Change(ByVal Target As Range)
Dim result As Double
 
If Target.Row >= 19 And Target.Row <= 39 Then
     
    If Cells(Target.Row, 12).Value = 0 Then
        If Cells(Target.Row, 5).Value <> "" Then
        Cells(Target.Row, 5).Value = ""
        End If
        If Cells(Target.Row, 7).Value <> "" Then
        Cells(Target.Row, 7).Value = ""
        End If
    Exit Sub
    End If
             
    If Cells(Target.Row, 12).Value > 0 And Cells(Target.Row, 5).Value = "" And Cells(Target.Row, 7).Value <> "" Then
    Cells(Target.Row, 5).Value = Cells(Target.Row, 7).Value / Cells(Target.Row, 12).Value
    Exit Sub
    End If
     
    If Cells(Target.Row, 12).Value > 0 And Cells(Target.Row, 5).Value <> "" And Cells(Target.Row, 7).Value = "" Then
    Cells(Target.Row, 7).Value = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
    Exit Sub
    End If
         
    If Cells(Target.Row, 12).Value > 0 And Cells(Target.Row, 5).Value > 0 And Cells(Target.Row, 7).Value > 0 Then
         
        If Target.Column = 7 Then
        result = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
            If Target.Value <> result Then
            Cells(Target.Row, 5).Value = Cells(Target.Row, 7).Value / Cells(Target.Row, 12).Value
            End If
        End If
         
        If Cells(Target.Row, 12).Value <> Cells(Target.Row, 7).Value / Cells(Target.Row, 5).Value Then
        Cells(Target.Row, 7).Value = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
        End If
             
        If Target.Column = 5 Then
        result = Cells(Target.Row, 7).Value / Cells(Target.Row, 12).Value
If Target.Value <> result Then
           Cells(Target.Row, 7).Value = Cells(Target.Row, 5).Value * Cells(Target.Row, 12).Value
            End If
        End If
    Exit Sub
    End If
     
 
     
Exit Sub
End If
End Sub


 
Est ce que quelqu'un aurai une petite idée? :(

n°1338950
tegu
Posté le 04-04-2006 à 17:01:02  profilanswer
 

Soit j'ai pb de vue, soit de navigateur, mais je vois pas le rouge.
Mais l'erreur 13 est celle dont je t'ai parlé sur ton autre post (sur le As); il s'agit d'une incompatibilité de type (type mismatch error en anglais).
Si tu me précises la ligne je devrais trouver le pb


Message édité par tegu le 04-04-2006 à 17:01:31
n°1338969
zaina
Posté le 04-04-2006 à 17:06:27  profilanswer
 

Exacte j'ai oublié de mettre en rouge, désolé
 
l'erreur se situe au niveau entre les deux [b]
 

If Target.Column = 5 Then
        result = Cells(Target.Row, 7).Value / Cells(Target.Row, 12).Value
           [b] If Target.Value <> result [/b]Then


 
Merci

n°1338988
tegu
Posté le 04-04-2006 à 17:23:13  profilanswer
 

Quand tu obtiens ton erreur, un bouton te permet de passer en debogage.
Une ligne jaune s'affiche et tu peux voir le contenu d'une variable en la survolant avec le pointeur de souris (désolé si tu connais bien déjà).
Peux-tu nous dire la valeur de Target.value ?
Es-tu sûr qu'aucun espace n'existe dans cette cellule, car à ce moment VBA interpréterait la zone comme une chaîne.
Si c'est une valeur décimale, le séparateur décimal est-il le bon par rapport au paramétrage Excel/Windows ?


Message édité par tegu le 04-04-2006 à 17:23:45
n°1339007
zaina
Posté le 04-04-2006 à 17:40:37  profilanswer
 

En fait la valeur de la cellule est celle de la cellule (5,19) dans ce cas 30.
J'ai verifier les decimals pas de prob pas d'espace et j'utilise la "," pour separer... :cry:  
 
Est ce qu'il y a possibilité de te montrer un fichier exemple pour que tu puisse voir la manoeuvre?
 
Merci

n°1339038
zaina
Posté le 04-04-2006 à 18:17:38  profilanswer
 

En plus je ne compren pas quand je supprime toute la plage et que je click sur retour en arrière ça marche mais quand je fait juste la plage j'ai un bug?!!!!!! :ouch: incroyable
 
 :cry:

n°1339097
juju2k
Posté le 04-04-2006 à 19:47:26  profilanswer
 

Je pense que le problème vient du fait que tu sélectionnes plusieurs cellules et que tu essayes de comparer la valeur de cette sélection avec ton résultat.
Hors, une sélection de plusieurs cellules ne donne pas de résultat numérique.
 
Il faudrait que tu affines ta sélection (donc ne traiter qu'une seule cellule).
 
Je suis dans le juste ? :)

n°1339456
zaina
Posté le 05-04-2006 à 10:27:26  profilanswer
 

Tout à fait juju tu es plus que dans le juste.
 
Comment alors lui demander de traiter toute la plage et non seulement une seule cellule? Est ce que celà veut dire que je devrai lui creer une macro qui calcule la selection directement.( Sachant que cette meme place est traité celulle par cellule sur l'autre macro)? :whistle:  
 
Gracias

n°1339953
juju2k
Posté le 05-04-2006 à 19:01:15  profilanswer
 

Je ne sais pas trop : essaye de faire des boucles pour traiter toutes les cellules contenues dans la sélection. Ou bien tu peux traiter seulement une ou deux cellules, comme tu le fais pour toutes les autres conditions.
 
À toi de voir ;)

n°1485478
trakto
Posté le 02-12-2006 à 23:21:43  profilanswer
 

Salut, une solution propre consisterait à faire comme ca
 
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
 
[code]
 
EndIf
EndSub
 
lorsque tu effaceras une cellule la procédure sera court circuitée
 
Dsl pour le retard, j'espère que ça aideras quelqu'un ..
 


---------------
LoLo
n°1485557
jpcheck
Pioupiou
Posté le 03-12-2006 à 12:20:42  profilanswer
 

trakto a écrit :


 
Dsl pour le retard, j'espère que ça aideras quelqu'un ..


là ce n'est plus du retard, c'est du déterrement de post :o

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro sans bouton

 

Sujets relatifs
Garder la méme valeur d'un bouton radioModification de données dans un tableau à l'aide d'une macro
Programmation Macro touches de clavierCode pour Macro sous Excel
Macro sous Outlook pour récupérer adresse[VBA] copier la colonne d'une feuille dans une autre
bouton sous excel et macro [résolu]Bouton d'action et lancement de macro avec arguments
creation d'un bouton pour executer une macro outlookBouton et macro dans word
Plus de sujets relatifs à : Macro sans bouton


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR