Aide pour macro excel

Résolu
perrus53 Messages postés 1024 Statut Membre -  
perrus53 Messages postés 1024 Statut Membre -
Bonjour,
Je souhaite créér une macro pour mon classeur, car enfait, j'ai des valeurs dans les colonnes C;D et E, et donc je souhaite que quand je clique sur un bouton, ces trois colonnes s'incrementent de 5 (mis a part C1, D1 et E1 qui contiennent le titre), mais vu que les colonnes ne sont pas encores remplies mais se remplissent tranquillemnt, il faut que les cases vides ne s'incrementent pas, et des qu'il y aura une valeur cela se mette a incrementer.
Voila, en esperant que cela soit possible.

Merci d'avance
--
Acquerrir un savoir c'est bien, le partager c'est mieux.
Ne pas oublier de mettre en resolu une fois le probleme resolu, pour aider les autres!!!
Configuration: Windows XP
Internet Explorer 7.0

13 réponses

  1. chtilou Messages postés 1704 Statut Membre 523
     
    Bonsoir perrus53.

    Un truc dans le style:
    Tu saisis 5 en C2, la valeur 10 s'affiche C1?

    Et quand tu saisis 10 en C2, la valeur 15 s'affiche en C2 et C1 passe de 10 à 15 ou reste figé?
    0
  2. perrus53 Messages postés 1024 Statut Membre 223
     
    Non, exemple:

    j'ai x en c1, y en d1, z en e1
    5 en c2, 5 en d2, 5 en e2
    rien en c3, d3, e3

    Si je clique sur mon bouton (pour lancer la macro), c2, d2 et e2 passent a 10, mais pas les lignes 3 (elles sont vides), mais des que j'aurais mis une valeur dans les lignes 3, elles s'incrementeront de 5 comme les lignes du dessus
    0
    1. chtilou Messages postés 1704 Statut Membre 523
       
      mais des que j'aurais mis une valeur dans les lignes 3, elles s'incrementeront de 5 comme les lignes du dessus

      Donc si je renseigne en C4 = 7; D4 =12; et E4 = 10
      après avoir lancé la macro j'obtiens C5 = 12; D5 =17; et E5 = 15

      Si un des trois colonne n'est pas renseignée?
      C4=""; C5=5 ?
      0
  3. perrus53 Messages postés 1024 Statut Membre 223
     
    Non, selon ton exemple je souhaite avoir: apres la macro: C4=12, D4=17, e4=15
    C5,d5 et e5 restent vides car elles sont egales a 0
    Si je ne renseigne pas une case elle reste vide
    Pour etre plus clair, je voudrais que chaque case n'ai aucun rapport avec les autres, simplement des que j'execute la macro, si la case (ex C2) =0, apres la macro c2=0, si c2>0, apres j'ai C2+5
    Mais je voudrais que ce systeme fonctionne pour toutes les cases des colonnes que j'ai dit (C,D et E) sans avoir a faire une macro par case.
    Suis-je plus clair?
    0
    1. chtilou Messages postés 1704 Statut Membre 523
       
      Je résume:

      les cellules en C, D, E seront toujours supérieures ou égales à 0 (jamais vides),
      et la macro agit sur la dernière ligne renseignée. (0 = 0; >0 = +5)

      J'y regarde dans quelques heures.
      Il est 1h45, très belle heure pour aller se coucher. ;-)

      Bonne nuit.
      0
      1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281 > chtilou Messages postés 1704 Statut Membre
         
        Trop tard, fallait pas dormir... ;-)
        0
      2. chtilou Messages postés 1704 Statut Membre 523 > eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Grrrrrrrrrr.

        Lu Eric déjà debout. (euhhh enfin assis).

        Bon week-end à tous.
        0
  4. perrus53 Messages postés 1024 Statut Membre 223
     
    Non toujours pas (on approche) ;-)
    Les cellules peuvent etres vides, et la macro agit sur toutes les cases des colonnes C,D,E qui ne sont pas vides
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

    Solution par macro :
    Sub inc5()
        Dim lmax As Long, lmax1 As Long
        Dim cel As Range
        ' recherche dernière ligne
        lmax = [C65536].End(xlUp).Row
        lmax1 = [D65536].End(xlUp).Row
        If lmax1 > lmax Then lmax = lmax1
        lmax1 = [E65536].End(xlUp).Row
        If lmax1 > lmax Then lmax = lmax1
        If lmax = 1 Then Exit Sub
        ' incrémenter cellules
        For Each cel In Range("C2:E" & lmax)
            If IsNumeric(cel) And cel > 0 Then cel.Value = cel.Value + 5
        Next cel
    End Sub

    http://www.cijoint.fr/cjlink.php?file=cj200805/cijgyZm1rB.xls

    eric
    0
  7. perrus53 Messages postés 1024 Statut Membre 223
     
    Ok on est res proche, je voudrais juste preciser (j'avais oublie desolé) que les cases sont en pourcentage! sorry!
    Donc cela ne fonctionne pas tout a fait
    0
  8. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    et bien tu ajoutes la quantité que tu veux :
    ... = cel.Value + 0.05
    0
  9. perrus53 Messages postés 1024 Statut Membre 223
     
    Bizarre, moi je me retrouve avec des valeurs qui ne corrspondent pas!!
    depart 5% ensuite 55%?
    depart 25% devient 525%
    0
  10. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    et bien tu ajoutes la quantité que tu veux :
    ... = cel.Value + 0.05

    tu modifies un peu le programme pour l'adapter à tes besoins...
    0
  11. perrus53 Messages postés 1024 Statut Membre 223
     
    Ah ok, j'avais pas pensé que 5% etait egal a 0.05!!
    Merci!!
    Probleme resolu!!
    0
  12. perrus53 Messages postés 1024 Statut Membre 223
     
    Peut tu me redonner la macro modifiée pour que je puisse augmenter chaque colonne d'une valeur differente?
    +0.05 pour C, +0.05 pour D, et +5 pour E, j'ai essayé mais je n'ai pas reussi!!
    0
  13. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Sub inc5()
        Dim lmax As Long, lmax1 As Long
        Dim cel As Range
        ' recherche dernière ligne
        lmax = [C65536].End(xlUp).Row
        lmax1 = [D65536].End(xlUp).Row
        If lmax1 > lmax Then lmax = lmax1
        lmax1 = [E65536].End(xlUp).Row
        If lmax1 > lmax Then lmax = lmax1
        If lmax = 1 Then Exit Sub
        ' incrémenter cellules
        For Each cel In Range("C2:D" & lmax)
            If IsNumeric(cel) And cel > 0 Then cel.Value = cel.Value + 0.05
        Next cel
        For Each cel In Range("E2:E" & lmax)
            If IsNumeric(cel) And cel > 0 Then cel.Value = cel.Value + 5
        Next cel
    End Sub

    Tu n'oublieras pas de mettre en résolu stp. Merci
    eric
    0
  14. perrus53 Messages postés 1024 Statut Membre 223
     
    Ok Merci bien, sa fonctionne impec!!
    0