Parcours des cellules

Parcours des cellules - VB/VBA/VBS - Programmation

Marsh Posté le 05-12-2006 à 11:26:50    

S'il vous plaît...Je ne trouve pas comment on peut faire un parcours d'un fichier excel.
Par exemple pour écrire ds la case: A1 puis B1 puis C1 puis B2 puis C2 puis B3...
Je n'arrive pas à incrémenter les indices.
Merci d'avance

Reply

Marsh Posté le 05-12-2006 à 11:26:50   

Reply

Marsh Posté le 05-12-2006 à 12:47:53    

Je suppose que tu cherches qqch comme  


Dim i As Integer
    For i = 1 To 123
        Range("A" & i) = i
        Range("B" & i) = i
        Range("C" & i) = i
    Next


Message édité par kiki29 le 06-12-2006 à 03:31:37
Reply

Marsh Posté le 05-12-2006 à 13:56:40    

Merci c'était ça...Bon j'ai un problème qui dure depuis un moment: j'ai une erreur de type run-time error '450'. En fait, avant d'insérer un terme dans une colonne je veux vérifier qu'il n'y est pas déjà...Je fais :
        Columns("D:D" ).Select
        Range("D1" ).Select
        With Selection.Find
        .Execute FindText:="&&"
        If Selection.Find.Found = False Then
            MsgBox "pas là"
        End If
        End With
Et ça me renvoit l'erreur!!

Reply

Marsh Posté le 05-12-2006 à 14:09:03    

Si tu saisis tes valeurs directement dans la colonne , ici un exemple pour la colonne D
 


Private Sub Worksheet_Change(ByVal Cible As Range)
    If Cible.Column = 4 Then
        Cible.Value = Trim(Cible.Value)
        If Len(Cible.Value) > 0 Then
            If Application.CountIf(Range("D:D" ), Cible) > 1 Then
                Cible.Value = ""
                Cible.Select
            End If
        End If
    End If
End Sub


Message édité par kiki29 le 06-12-2006 à 03:32:30
Reply

Marsh Posté le 05-12-2006 à 15:03:29    

Je veux juste vérifier qu'un mot n'est pas déjà ds la colonne avant de l'insérer...
If Selection.Find(What:=Cells(i, 2).Value, After:=ActiveCell, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate = False Then
            Selection.FindNext(After:=ActiveCell).Activate
            Range("D" & i).Select
            ActiveCell.FormulaR1C1 = Cells(i, 2).Value
            Range("D" & i + 1).Select
            ActiveCell.FormulaR1C1 = Cells(i + 1, 2).Value
    End If
Pourquoi cette façon ne marcherait pas??

Reply

Marsh Posté le 05-12-2006 à 16:31:04    

Tirer d'un exemple de l'aide en ligne ... à adapter


Sub Tst()
Dim C As Range
Dim Adresse As String
Dim Rch As String
    Rch = "1234"
    With Range("D:D" )
        Set C = .Find(Rch, LookIn:=xlValues,LookAt:=xlWhole)
        If Not C Is Nothing Then
            Adresse = C.Address
            Do
                Set C = .FindNext(C)
                Debug.Print "Trouvé en : " & C.Address
            Loop While Not C Is Nothing And C.Address <> Adresse
        Else
            Debug.Print "Introuvable"
        End If
    End With
End Sub


Message édité par kiki29 le 05-12-2006 à 17:16:57
Reply

Marsh Posté le 05-12-2006 à 17:08:22    

Merci beaucoup!Apparement ça marche...

Reply

Marsh Posté le 05-12-2006 à 17:16:31    

j'avais oublié de rajouter un LookAt:=xlWhole dans le find
dire que ça marche en informatique s'appelle ... un mensonge


Message édité par kiki29 le 05-12-2006 à 17:17:37
Reply

Sujets relatifs:

Leave a Replay

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