Aide macro excel

Résolu
komanvi Messages postés 57 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 8 mars 2011 - 14 janv. 2011 à 10:16
komanvi Messages postés 57 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 8 mars 2011 - 14 janv. 2011 à 14:30
slt le forum
bonne et heureuse annee a toussssssssssss

je suis komanvi et je penche encore vers vous pour une aide
en faite j'ai un colonne dans la quelle il ya plusieurs "1" et "0"
mois je veux faire un parcour dans la colonne et selectionner la cellule du premier "1" que je trouve

merci d'avance

8 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
14 janv. 2011 à 10:37
Salut komanvi,
Bonne année à toi aussi.

Pour répondre à ta question :
je veux faire un parcour dans la colonne et selectionner la cellule du premier "1" que je trouve


Tu peux utiliser une boucle (par exemple :For / Next )
Exemple:

For l=1 to 50 ' de la ligne 1 à 50
 ValCellule = Cells(L,"A").value ' Valeur de la cellule de la colonne A ligne 'L'
 If ValCellule 1 Then  ' test si1
     Msgbox "Le premier 1 est trouvé à la ligne : " & L
 End If

Next



Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
3
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
14 janv. 2011 à 14:25
Bonjour,
Pour ton souci de commentaire :
En fait il provient du fait que SI un commentaire existe déjà dans ta cellule il ne peut pas en AJOUTER.
Il faut dabord supprimer l'existant avant d'en remettre un :

Sub test()
Range("b5").Select
On Error Resume Next
Selection.ClearComments
Worksheets(1).Range("b5").AddComment
Range("b5").Comment.Visible = False
Range("b5").Comment.Text Text:="OCIT:" & Chr(10) & cellue11

End Sub



PS: Encore une fois, pense à créer un nouveau SUJET lorsque c'est une nouvelle question.
Pour résoudre tes soucis, pense aussi à commencer par debuger le programme en le lançant en mode pas à pas pour essayer de comprendre le souci.
Pense aussi que tu peux utiliser l'enregistreur de macro.



Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
3
komanvi Messages postés 57 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 8 mars 2011
14 janv. 2011 à 11:28
merci ça marche
mais il me liste toute les ligne contenant "1"
moi je veux qu'il s'arrete sur le premier "1", je ne veux pas la valeur de ligne des autre "1"

merci d'avance
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 344
14 janv. 2011 à 12:04
Bonjour,
ce n'etait qu'un exemple.
pour sortir de la boucle tu dois utiliser l'instruction Exit For.

regardes ce site : Gestion Boucle en VBA

Cordialement,
Jordane,
______________________________________________________
Règles du forum à lire avant de poster une question : ICI
0

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

Posez votre question
komanvi Messages postés 57 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 8 mars 2011
14 janv. 2011 à 12:33
merci j'ai pu faire

un autre souci: j'essaie d'inserer un commentaire dans ma macro mais elle genere une erreur
voici le code:
Range("b5").Select
Worksheets(1).Range("b5").AddComment
Range("b5").Comment.Visible = False
Range("b5").Comment.Text Text:="OCIT:" & Chr(10) & cellue11
le commentaire s'effectue mais genere quand meme l'erreur sur la deuxieme ligne(Worksheets(1).Range("b5").AddComment)
merci d'avance
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
14 janv. 2011 à 14:12
Salut,

bien que Jordane45 à bien repondu, je te propose 2 autres méthodes qui n'utilisent pas de boucle et qui sont donc potentiellement plus rapide sur des gros volume de valeurs.

La première méthode utilise le "filtre automatique d'excel associé à la fonction "Atteindre"
Bien que la plus rapide, cette méthode à un inconvénient qui est qu'elle est limitée à 255 cellules ou plages de cellules non contigus

Sub DemoParFiltre()
    Dim MaPlage As Range, Macellule As Range, Critere As String
    Dim msg As String, NbVal As Long
    Critere = "1" 'critere de recherche basé sur une égalité
    msg = ""
    Application.ScreenUpdating = False
    With Columns("A:A")
        .AutoFilter Field:=1, Criteria1:="=" & Critere, Operator:=xlAnd
        On Error Resume Next
        Set MaPlage = .SpecialCells(xlCellTypeConstants, 1).SpecialCells(xlCellTypeVisible)
        .AutoFilter
    End With
    Application.ScreenUpdating = True
    Set Macellule = MaPlage.Cells(1, 1)
    NbVal = MaPlage.Cells.Count
    If Err 0 Then msg "la premiere se trouve en " & Macellule.Cells(1, 1).Address(False, False)
    MsgBox NbVal & " valeur(s) trouvée(s). " & msg
End Sub


Deuxième méthode qui utilise "Find"

Sub DemoParFind()
    Dim Macellule As Range, Critere As String
    Critere = "1"
    Set Macellule = Columns("A").Cells.Find(Critere, Cells(1, 1), xlValues, , xlByRows, xlNext, False)
    MsgBox "la premiere valeur se trouve en " & Macellule.Address(False, False)
End Sub


A+
0
komanvi Messages postés 57 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 8 mars 2011
14 janv. 2011 à 14:29
merci
0
komanvi Messages postés 57 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 8 mars 2011
14 janv. 2011 à 14:30
merci pour la reponse
0
Rejoignez-nous