Rapport de message :*
 

Re: Traitement de données automatisé

Titre du sujet : Re: Traitement de données automatisé
par myDearFriend! le 12/07/2007 21:24:40

Re le fil,

Voici une solution d'après l'analyse que j'ai du problème pour ma part (j'ai essayé de préserver autant que possible la procédure originale) :
Sub Comment()
'declaration de variable "c" est une cellule
Dim c As Range
'
déclaration d'une variable compteur (maxi = nombre de cellules de la plage source)
Dim N As Byte

    '
Boucle parcourant chaque Cellule du range AB15:AG31 sur la Feuil1
    
For Each c In Sheets("Feuil1").Range("AB15:AG31")
    
    
'Condition 1 Si valeur de "c" différent de vide alors
    If c.Value <> "" Then
        '
j'incrémente le compteur d'une unité
        N 
1
        
'Copier "c" dans le range A1:F16 de la Feuil2 à la Nième position dans cette plage
        c.Copy Destination:=Sheets("Feuil2").Range("A1:F16").Item(N)
        '
Fin de Si
    End 
If
    
    
' Valeur de "C" suivante
    Next c
    
    ' 
Fin de boucle
End Sub
Modifications apportées à la procédure :
  • J'ai ajouté une variable compteur "N" qui permet de ranger les données copiées au fur et à mesure dans la plage réceptrice
  • J'ai ajouté et revu certains commentaires (For Each/Next n'est pas une "fonction" mais un "bloc d'instructions" permettant de réaliser une boucle)
  • Dans If UCase(c.Value) <> "" Then, j'ai supprimé la notion de Ucase() qui n'a semble t'il pas d'intérêt ici (Ucase est une fonction permettant de convertir une chaine en Majuscules)


  • Espérant avoir compris le sujet et t'avoir un peu aidé...
    N'hésite pas si tu as besoin d'un complément d'informations.

    Cordialement,