Aide pour macro excel

Résolu
perrus53 Messages postés 1012 Date d'inscription   Statut Membre Dernière intervention   -  
perrus53 Messages postés 1012 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

13 réponses

chtilou Messages postés 1696 Date d'inscription   Statut Membre Dernière intervention   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
perrus53 Messages postés 1012 Date d'inscription   Statut Membre Dernière intervention   222
 
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
chtilou Messages postés 1696 Date d'inscription   Statut Membre Dernière intervention   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
perrus53 Messages postés 1012 Date d'inscription   Statut Membre Dernière intervention   222
 
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
chtilou Messages postés 1696 Date d'inscription   Statut Membre Dernière intervention   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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276 > chtilou Messages postés 1696 Date d'inscription   Statut Membre Dernière intervention  
 
Trop tard, fallait pas dormir... ;-)
0
chtilou Messages postés 1696 Date d'inscription   Statut Membre Dernière intervention   523 > eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention  
 
Grrrrrrrrrr.

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

Bon week-end à tous.
0
perrus53 Messages postés 1012 Date d'inscription   Statut Membre Dernière intervention   222
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
perrus53 Messages postés 1012 Date d'inscription   Statut Membre Dernière intervention   222
 
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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
et bien tu ajoutes la quantité que tu veux :
... = cel.Value + 0.05
0
perrus53 Messages postés 1012 Date d'inscription   Statut Membre Dernière intervention   222
 
Bizarre, moi je me retrouve avec des valeurs qui ne corrspondent pas!!
depart 5% ensuite 55%?
depart 25% devient 525%
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
perrus53 Messages postés 1012 Date d'inscription   Statut Membre Dernière intervention   222
 
Ah ok, j'avais pas pensé que 5% etait egal a 0.05!!
Merci!!
Probleme resolu!!
0
perrus53 Messages postés 1012 Date d'inscription   Statut Membre Dernière intervention   222
 
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
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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
perrus53 Messages postés 1012 Date d'inscription   Statut Membre Dernière intervention   222
 
Ok Merci bien, sa fonctionne impec!!
0