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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  demande d'aide pour une macro conditionnelle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

demande d'aide pour une macro conditionnelle

n°2062341
julielef
Posté le 10-03-2011 à 16:51:19  profilanswer
 

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

mood
Publicité
Posté le 10-03-2011 à 16:51:19  profilanswer
 

n°2062396
otobox
Maison fondée en 2005
Posté le 10-03-2011 à 22:39:55  profilanswer
 

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

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

  demande d'aide pour une macro conditionnelle

 

Sujets relatifs
Je besoin d'aide sur PHPVBA excel macro conditionnelle HELP!!
demande l'aide à comprendre l'algorithme MalgrangeAide en Scheme
Aide pour inclure une boucleAide : VBA SELECTION une colonne entière sous condition bug
aide en EJB Statelessaide je me suis fait hacker mon compte
Plus de sujets relatifs à : demande d'aide pour une macro conditionnelle


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