Modifier un code

bonjour je souhaiterai modifier le code suivant qui est destiné à exporter des données d'une feuille (qui supporte le code )vers une autre feuille nommée (RESEAU) en definissant une plage

pour la colonne receptrice qui est la colonne B , par exemple je souhaite que mes données soient importés sur la feuille nommée RESEAU entre les cellules B21 et B100 ,puis lorsque la cellule B100 est atteinte pouvoir remonter en cellule B21 pour recevoir la donnée suivante

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect(Range("A2:A100"), Target) Is Nothing And Target.Count = 1 Then
    With Sheets("RESEAU").Range("B" & Rows.Count).End(xlUp).Offset(1, 0)
      .Value = Target
      .NumberFormat = Target.NumberFormat
    End With
  End If
End Sub

parce que ce code produit qu'une longue liste de donnée illimitée sur la colonne B de la feuille RESEAU

Merci pour votre aide

a++

Bonjour,

Quand tu arrive à B100, tu efface la liste B21:B100 ?

Claude

Salut le forum

Rocket, tu as déjà un code similaire, qui fait cela sur une de tes anciennes demandes

Lien de la discussion : https://forum.excel-pratique.com/excel/boucle-t25359.html

Mytå

merci myta j'ai peut etre bien oublié en effet , je vais voir ca , merci


re moi ...en fait ce type de boucle ne convient pas , car si un element se trouve en première cellule ( donc cellule non vide ) le code réecrirait dessus , j'aurai du etre plus precis c'est de ma faute ! , il faudrait en fait qu'arrivé à la dernière cellule B100, la cellule suivante à remplir serait une cellule vide ou disponible de la colonne B toujours comprise entre B21 et B100

Re le forum

Code à mettre dans le module de la Feuil2

Dans la cellule A1 de la Feuil1 écrire 100 comme valeur initiale

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  If Not Intersect(Range("A2:A21"), Target) Is Nothing And Target.Count = 1 Then
    With Sheets("Feuil1")
      .Range("A1") = IIf(.Range("A1") >= 100, 2, .Range("A1") + 1)
        .Cells(.Range("A1"), 1) = Target.Value
    End With
  End If
End Sub

Le code va boucler sur ta plage de cellule ici de 3 à 100, et repartir à 3 une fois la limite atteinte.

Mytå

Merci , pour la partie du code

With Sheets("Feuil1")
      .Range("A1") = IIf(.Range("A1") >= 100, 2, .Range("A1") + 1)
        .Cells(.Range("A1"), 1) = Target.Value
    End With
  End If
End Sub

j'ai essayé d'apporter une modif car la colonne visée devra se remplir à partir de la cellule B22 de ma feuille 1 , cela ne me donne ceci

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Intersect(Range("A2:A21"), Target) Is Nothing And Target.Count = 1 Then
        With Sheets("Feuil1")
          .Range("B21") = IIf(.Range("B21") >= 100, 2, .Range("B21") + 1)
            .Cells(.Range("B21"), 1) = Target.Value
        End With
      End If
    End Sub

j'ai bien mis la valeur 100 en cellule B21 , je n'ai aucun report depuis la feuille sur laquelle est ecrit le code (feuille2)

merci

Rechercher des sujets similaires à "modifier code"