demande d'aide pour une macro conditionnelle

demande d'aide pour une macro conditionnelle - VB/VBA/VBS - Programmation

Marsh Posté le 10-03-2011 à 16:51:19    

rebonjour tout le monde!
J'aurais besoins d'un peu d'aide (encore...) pour une macro.
Voila :
J'ai un tableau qui comporte 60 colonnes.
Une colonne sur 2 contient des valeurs que je voudrais copier automatiquement dans les colonne de gauche, tout en sachant que je ne peut pas mettre de formule dans ces colonnes.
J'ai donc fait un début de macro conditionnelle:
 
Private Sub CommandButton3_Click()
Range ("I21" ).Select
If Range ("I21" )="o" Then Range ("H21" )="o"
End Sub
 
Cela fonctionne pour cette cellule en particulier, mais si je veux que la macro fonctionne pour l'ensemble des colonnes, je ne sais pas comment m'y prendre...
En effet, si je continu avec la macro que j'ai fais, je dois faire pas loin de 300.000 conditions dans cette macro. Je pense que l'on peut faire autrement...
Auriez vous des idées???
merci d'avance
julie

Reply

Marsh Posté le 10-03-2011 à 16:51:19   

Reply

Marsh Posté le 10-03-2011 à 22:39:55    

Oui, il faut que tu parcoures chaque ligne pour chaque colonne et vérifier si ta condition est vraie. En fin de colonne (c'est à dire à la première cellule vide de cette colonne, tu sors de la boucle et tu en recommences une autre au début de la colonne suivante.
 
Ce qui donne en vba :
 

Sub test()
Dim Ligne As Integer
Dim colonne As Integer
 
    '1ère boucle : Parcourir chaque colonne de 2 en 2
    For colonne = 2 To 60 Step 2 'colonne=2 : position de la 1ere colonne à tester, on s'arrête à la colonne 60
        '2e boucle : parcourir chaque ligne jusqu'à ce qu'une cellule vide soit trouvée
        Ligne = 1 'Initialisation de la première ligne à lire
        Do 'Début de la boucle
            If IsEmpty(Cells(Ligne, colonne)) Then Exit Do 'On sort de la 2nde boucle si la cellule est vide
            If Cells(Ligne, colonne) = "o" Then Cells(Ligne, colonne - 1) = "o" 'Si la valeur de la cellule est la chaine de caractère o, la copier sur la cellule à gauche
            Ligne = Ligne + 1 'On passe à la ligne suivante
        Loop 'Fin de 2nde la boucle
    Next colonne 'Fin de la 1ere boucle, on passe à la colonne suivante jusqu'à la colonne 60
End Sub


 
Connais-tu la touche F8 dans l'éditeur vba ? Clique quelque part sur une ligne de cette macro et appuis sur la touche F8 : cela va te permettre de regarder ligne par ligne ce que fait la macro et comprendre comment ça fonctionne ;)
En mettant le curseur sur une variable (par exemple colonne), sans cliquer dessus, tu pourras voir la valeur que prend cette variable à chaque opération.
 
Bon courage :)


Message édité par otobox le 10-03-2011 à 22:41:01

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed