Macro : Division conditionelle

Jex94

XLDnaute Nouveau
Bonjour,

J'ai un fichier excel avec des valeurs alphabétiques en colonnes A, et des nombres en colonnes D et E.
Je cherche une macro qui permettrait de diviser les nombres des colonnes D et E par 119,3317422 sur toutes les lignes dont la colonne A dont les données sont "XX PF" ou "YY NC".

Merci beaucoup par avance, j'ai essayé de la créer moi même, sans succès.
Je mets en pièce jointe les données attendues avant macro en rouge et après macro en vert.

Jex
 

Pièces jointes

  • Classeur1.xlsm
    8.1 KB · Affichages: 60
  • Classeur1.xlsm
    8.1 KB · Affichages: 65
  • Classeur1.xlsm
    8.1 KB · Affichages: 68

ROGER2327

XLDnaute Barbatruc
Re : Macro : Division conditionelle

Bonsoir Jex94


Pas claire, cette histoire : pourquoi doit-on trouver 377,100000137264 en E8 ?​


ROGER2327
#5777


Dimanche 22 Clinamen 139 (Fête des Polyèdres - fête Suprême Seconde)
24 Germinal An CCXX, 8,0067h - roquette
2012-W15-5T19:12:58Z
 

Jex94

XLDnaute Nouveau
Re : Macro : Division conditionelle

Bonjour,

Effectivement il y a une erreur dans le fichier excel : : En A2 j'ai la donnée "XX NC" donc la division ne doit pas se faire sur E2. (Le résultat de E2 après macro est en E8 dans le fichier joint, et ce n'est pas "377,10" qu'il faut lire en cellule E8, mais 45000" ).

-> Je souhaite donc diviser les nombres inscrits dans les colonnes D et E par 119,3317422, si en colonne A se trouve l'une des 2 données : "XX PF" ou "YY NC".

Merci beaucoup par avance.

Jex
 

ROGER2327

XLDnaute Barbatruc
Re : Macro : Division conditionelle

Re...


Bonjour,

Effectivement il y a une erreur dans le fichier excel : : En A2 j'ai la donnée "XX NC" donc la division ne doit pas se faire sur E2. (Le résultat de E2 après macro est en E8 dans le fichier joint, et ce n'est pas "377,10" qu'il faut lire en cellule E8, mais 45000" ).

-> Je souhaite donc diviser les nombres inscrits dans les colonnes D et E par 119,3317422, si en colonne A se trouve l'une des 2 données : "XX PF" ou "YY NC".

Merci beaucoup par avance.

Jex
D'accord ! Voyez si cela fait l'affaire :​
VB:
Sub toto()
Dim Cte#, oCel As Range, oPlg As Range, dPlg As Range
    Cte = 119.3317422
    Set oPlg = Range("A1:E5") 'Adapter à la plage de données réelles.
    For Each oCel In oPlg.Columns(1).Cells
        If oCel.Value = "XX PF" Or oCel.Value = "YY NC" Then
            If Not IsEmpty(oCel.Offset(, 3)) Then oCel.Offset(, 3).Value = oCel.Offset(, 3).Value / Cte
            If Not IsEmpty(oCel.Offset(, 4)) Then oCel.Offset(, 4).Value = oCel.Offset(, 4).Value / Cte
        End If
    Next
End Sub
(Attention à ne pas l'exécuter plusieurs fois de suite !)​



ROGER2327
#5783


Lundi 23 Clinamen 139 (Locus Solus - Vacuation)
25 Germinal An CCXX, 0,7111h - pigeon
2012-W15-6T01:42:24Z
 

Jex94

XLDnaute Nouveau
Re : Macro : Division conditionelle

Salut,

Cela fonctionne parfaitement super !

-> J'aimerais vraiment pouvoir créer moi même ce type de macros, tout apprendre du VBA en partant de rien, pourriez-vous m'indiquer quels sont les ouvrages de références pour avoir les bases indispensables avant d'envisager le niveau 2 ?

Cdt,
Jex
 

ROGER2327

XLDnaute Barbatruc
Re : Macro : Division conditionelle

Re...


Salut,

Cela fonctionne parfaitement super !

-> J'aimerais vraiment pouvoir créer moi même ce type de macros, tout apprendre du VBA en partant de rien, pourriez-vous m'indiquer quels sont les ouvrages de références pour avoir les bases indispensables avant d'envisager le niveau 2 ?

Cdt,
Jex
Tant mieux si cela vous convient.

Pour le reste, je ne serai pas de bon conseil. J'ai, il y a longtemps (hélas), utilisé quelques manuels aujourd'hui périmés. Je dois dire qu'ils ne m'ont guère intéressé. J'ai aussi eu à faire à deux ou trois formateurs autoproclamés qui ne m'ont pas laissé de souvenir positif. Au-delà du rabâchage de routines standard plus ou moins bien conçues, ils ne m'ont guère aidé. Coupons court immédiatement à la polémique : je ne rends compte que de mon expérience (personnelle par définition) et je ne préjuge nullement qu'il n'existe pas de manuels bien conçus, ni de formateurs sérieux, compétents et inventifs. Je dis simplement que je n'ai pas su les trouver.

En fait, j'ai appris le peu que je sais par quelques sources disparates :
- l'utilisation constante de l'aide fournie avec les logiciels ;
- la fréquentation de sites tels que celui-ci ;
- l'étude critique et la mise en pratique des solutions proposées par ces sources ,
- et surtout la réflexion et l'expérimentation : concevoir une solution logique sur papier, puis écrire un code pour l'appliquer sur la base des informations issues des sources précitées. En général, on commence par se planter, mais en résolvant une à une les difficultés, on comprend réellement le fonctionnement. Hélas, la récompense de ces efforts n'arrive qu'au bout de quelques années... (Je parle pour moi : il va de soi que certains individus spécialement doués sont probablement capables d'apprendre tout cela en vingt minutes ; si vous en croisez un, méfiez-vous...)

Un autre outil peut dépanner : l'enregistreur de macro. Mais à une condition (au moins) : prendre le temps d'analyser en profondeur le résultat obtenu et le nettoyer des innombrables scories qu'on y trouve. Si l'on fait ce travail, on peut comprendre pas mal de choses.

J'espère que d'autres vous donneront les références que vous cherchez ou vous feront part d'expériences plus enthousiasmantes.​


Bon courage.



ROGER2327
#5784


Lundi 23 Clinamen 139 (Locus Solus - Vacuation)
25 Germinal An CCXX, 4,2815h - pigeon
2012-W15-6T10:16:33Z
 
Dernière édition:

Discussions similaires

Réponses
20
Affichages
367

Statistiques des forums

Discussions
312 841
Messages
2 092 708
Membres
105 514
dernier inscrit
Hébera