Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2012, 13h09   #1
Invité de passage
 
Homme Xavier
Inscription : février 2012
Messages : 8
Détails du profil
Informations personnelles :
Nom : Homme Xavier
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : février 2012
Messages : 8
Points : 4
Points : 4
Par défaut Répéter une macro, réaliser une boucle

Bonjour,

Je souhaiterai répéter une macro toute simple sur plusieurs lignes. Voici la macro en question :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sub Impress_oui()
 
If Not IsEmpty(Range("b5")) Then
Range("a5") = "oui"
Else
Range("a5") = ""
End If
 
If Not IsEmpty(Range("b6")) Then
Range("a6") = "oui"
Else
Range("a6") = ""
End If
 
....
 
If Not IsEmpty(Range("b50")) Then
Range("a50") = "oui"
Else
Range("a50") = ""
End If
 
End Sub
Je voudrai faire la même chose pour les cellules b7 et a7... et cela jusqu'à la ligne 50. Comment le faire en évitant de taper 50 fois le même code ? Merci d'avance pour votre aide.

Xavier.
zazrun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 13h16   #2
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Bonjour,

Voici une proposition de boucle :

Code :
1
2
3
4
5
6
7
8
9
10
 
Dim intLigne as Integer
 
For intLigne = 5 to 50
    If Not IsEmpty(Range("b" & intLigne)) Then
        Range("a" & intLigne) = "oui"
    Else
        Range("a" & intLigne) = ""
    End If
Next intLigne
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/02/2012, 15h19   #3
Expert Confirmé Sénior
 
Avatar de casefayere
 
Homme Dominique LEMAIRE
Salarié Champagne
Inscription : décembre 2006
Messages : 2 636
Détails du profil
Informations personnelles :
Nom : Homme Dominique LEMAIRE
Âge : 57
Localisation : France, Ardennes (Champagne Ardenne)

Informations professionnelles :
Activité : Salarié Champagne
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : décembre 2006
Messages : 2 636
Points : 5 075
Points : 5 075
Bonjour,

autre façon (histoire d'apprendre) :
Sub essai()
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim derlg As Integer, plage As Range, cel As Range
 
derlg = Range("B" & Rows.Count).End(xlUp).Row
Set plage = Range("b5:b" & derlg)
For Each cel In plage
  If Not IsEmpty(cel) Then
    cel(1, 0) = "oui"
  Else
    cel(1, 0) = ""
    End If
Next cel
 
End Sub
__________________
Dom

De Anomaly
Citation:
N'oubliez pas les points suivants !

Les membres qui vous répondent sont des participants bénévoles !
Quand votre problème est résolu, pensez à cliquer sur le bouton [Résolu] en bas de la discussion !
Pensez à remercier les messages qui vous ont aidé en votant positivement pour eux !
casefayere est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 15h40   #4
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 831
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 831
Points : 2 859
Points : 2 859
Envoyer un message via MSN à patricktoulon
Par défaut re

bonjour

et dans son plus simple apareil
Code :
1
2
3
4
5
6
7
8
9
10
 
Sub truc()
dim i as long
For i = 5 To 50
If Cells(i, "b") <> "" Then
Cells(i, "b").Offset(0, -1) = "oui"
Else: Cells(i, "b").Offset(0, -1) = ""
End If
Next
End Sub
que dije!!! encore plus simple puisque l'on connais les limites basse et haute (de 5 a 50)nous n'avons pas besoins de connaitre plus de données
Code :
1
2
3
4
5
6
7
8
 
Sub truc()
Dim i As Long
For i = 5 To 50
'si la cellule ligne i "b" est différente de rien  alors 
If Cells(i, "b") <> "" Then Cells(i, "a") = "oui" 'on ne continuera pas la condition avec "else" puisque la condition est basée sur la présence de quelque chose dans la cellule ou pas 
Next
End Sub
au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/02/2012, 11h59   #5
Membre Expert
 
Femme
Ingénieur développement logiciels
Inscription : juin 2007
Messages : 480
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Ain (Rhône Alpes)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2007
Messages : 480
Points : 1 024
Points : 1 024
Bonjour,
Attention au dérapage, Patrick
Citation:
If Cells(i, "b") <> "" Then Cells(i, "a") = "oui" 'on ne continuera pas la condition avec "else" puisque la condition est basée sur la présence de quelque chose dans la cellule ou pas
On remplit la cellule en colonne A par rapport à la présence de quelquechose dans la colonne B... donc il faut maintenir Cells(i, "a") = "" si la colonne B est vide.
tedo01 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/02/2012, 19h11   #6
Expert Confirmé
 
Avatar de patricktoulon
 
patrick
Inscription : avril 2009
Messages : 1 831
Détails du profil
Informations personnelles :
Nom : patrick
Âge : 42
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations professionnelles :
Secteur : Bâtiment

Informations forums :
Inscription : avril 2009
Messages : 1 831
Points : 2 859
Points : 2 859
Envoyer un message via MSN à patricktoulon
Par défaut re

Citation:
Envoyé par tedo01 Voir le message
Bonjour,
Attention au dérapage, Patrick

On remplit la cellule en colonne A par rapport à la présence de quelque chose dans la colonne B... donc il faut maintenir Cells(i, "a") = "" si la colonne B est vide.
je n'ai pas insisté sur ce point car j'ai penser que remplacer quelque chose dans la cellule en colonne "a" par rien était dangereux car la condition de base est basé sur rien en colonne b donc si il n'y a rien en colonne b mais qu'il y a quelque chose en colonne "a" il ne veut peut être pas l'enlever

Dérappage controlé j'adore drifter
au plaisir
__________________
mes fichiers dans les contributions:
mon formulaire mail avec CDO en vba et mon formulaire mail avec CDO en vbs dans un HTA
mon nouveau mouse in out pour les boutons dans un userform
mon addin pour prendre un cliché de selection de cellules

si ton problème est résolu n'oublie pas de pointer :résolu:ça peut servir aux autres
et n'oublie pas de voter
patricktoulon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h06.


 
 
 
 
Partenaires

Hébergement Web