Besion d'aide sur la copie en VB avec une condition SVP

Résolu
shakti14789 Messages postés 7 Statut Membre -  
shakti14789 Messages postés 7 Statut Membre -
Bonjour,
j'ai fais un code pour que je puisse copier le contenu des cellule d'une colonne à une condition que les valeurs des cellule seront numérique; et voila le code :

Sub Tst3()
Dim LastRowA As Long, cA As Range
Dim i As Long
    LastRowA = Feuil4.Range("J" & Rows.Count).End(xlUp).Row
    i = 1
 
    Application.ScreenUpdating = False
    Feuil5.Columns("C:C").ClearContents
    For Each cA In Feuil4.Range("J1:J" & LastRowA)
        If cA.Value <> "" Then
        If IsNumeric(cA.Value) = True Then
            Feuil5.Cells(i, 3) = cA.Value
            i = i + 1
        End If
        End If
    Next cA
    Application.ScreenUpdating = True
End Sub


alors là tous marche bien les valeurs numérique de la colonne J de la feuille 4 se déplacent à la colonne C de la feuille 5. Mais le problème c'est je veux que même les valeurs de la colonne I de la feuille 4 ce déplaceront, au même temps que les valeurs de la colonne J, à la colonne B de la feuille 5.
est ce qu'il y a quelqu'un qui peu m'aider à le faire car j'ai bloqué, et je ne suis qu'un débutant, et ça sera gentil de votre part.

EDIT: Ajout de la coloration syntaxique.

3 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,
    je veux que même les valeurs de la colonne I de la feuille 4 ce déplaceront, au même temps que les valeurs de la colonne J, à la colonne B de la feuille 5.

    Que veux tu dire ?
    0
    1. shakti14789 Messages postés 7 Statut Membre
       
      Bonjour, merci pour la réponse.
      je veux dire que lorsque le VB trouve la valeur de cA voulu lors du test, au lieu de copier seulement la cellule trouver, il copiera aussi la cellule de la colonne qui est juste accoté de la première cellule.

      donc à la fin du programme j'aurai la cellule de la colonne testée et une autre cellule qui est à la même ligne de celle-la.

      j'espère que mon problème sera bien claire. merci.
      0
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Sub Tst3()
    Dim LastRowA As Long, cA As Range
    Dim i As Long
    Dim cB, val
        LastRowA = Feuil4.Range("J" & Rows.Count).End(xlUp).Row
        i = 1
      Application.ScreenUpdating = False
        Feuil5.Columns("C:C").ClearContents
        For Each cA In Feuil4.Range("J1:J" & LastRowA)
          If cA.Value <> "" Then
            If IsNumeric(cA.Value) = True Then
         cB = cA.Address
         cB = Replace(cB, "$J", "$I")
        val = Range(cB).Value
        Feuil5.Cells(i, 3) = cA.Value
               Feuil5.Cells(i, 2) = val
                i = i + 1
            End If
            End If
        Next cA
     Application.ScreenUpdating = True
    End Sub
    

    0
    1. shakti14789 Messages postés 7 Statut Membre
       
      Bonjour, merci pour la réponse
      ça n'a changé rien il me donne le même résulta.
      0
    2. shakti14789 Messages postés 7 Statut Membre
       
      quand je test en débogage pas à pas je trouve que cA.Adress et cB change quand le test est True mais val = Range(cB).Value reste toujours vide.
      0
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Cela fonctionne chez moi. Il faut bien sur que tu sois positionné sur ta Feuille4.
    essaie ceci si tu n'as pas trop de ligne:

    Sub Tst3()
    Dim LastRowA As Long, cA As Range
    Dim i As Long
    Dim cB, val
        LastRowA = Feuil4.Range("J" & Rows.Count).End(xlUp).Row
        i = 1
      Application.ScreenUpdating = False
        Feuil5.Columns("C:C").ClearContents
        For Each cA In Feuil4.Range("J1:J" & LastRowA)
          If cA.Value <> "" Then
            If IsNumeric(cA.Value) = True Then
         cB = cA.Address
         MsgBox cB
         cB = Replace(cB, "$J", "$I")
         MsgBox cB
        val = Range(cB).Value
        MsgBox val
        Feuil5.Cells(i, 3) = cA.Value
               Feuil5.Cells(i, 2) = val
                i = i + 1
            End If
            End If
        Next cA
     Application.ScreenUpdating = True
    End Sub

    0
    1. shakti14789 Messages postés 7 Statut Membre
       
      mille merci, tu avais raison je n'été pas bien positionner dans ma feuille, car j'ai pas fais attention au positionnement, maintenant les deux codes sont fonctionnels.
      merci pour ton aide.
      0