Excel 07 / Copier coller dans des sheets

Excel 07 / Copier coller dans des sheets - VB/VBA/VBS - Programmation

Marsh Posté le 16-01-2011 à 14:50:49    

:hello:  
 
C'est vraiment bête, mais je ne m'en sort pas:
 
J'aimerai faire une recherche sur un terme et effectuer un traitement lorsque ce terme est trouvé.
 
J'arrive bien à parcourir le tableau et à trouver les x et y des termes en question  :o  
 
Par contre, impossible de récuperer le texte ou de faire un copier coller...
 
Voici le code:
 

Public Function traitement(l As Long, c As Integer)
    Dim cellcontent As String
    cellcontent = ActiveSheet.Cells(c, l).Value
    traitement = "[" & c & "," & l & "] " & cellcontent & vbCrLf
     
    Range(Cells(c, l), Cells(c + 10, l + 4)).Select
    Selection.Copy
    Sheets("Sheet1" ).Select
    Range("B" & l).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
End Function


 
La valeur de retour vaut par exemple "[2, 30] "
 
La cellule est vide alors que la recherche est fructueuse:
 

With Sheets("Indiv" )
    l = 1: c = 1
    Do                      ' recherche
        Set sel = .Cells.Find(What:=rech, after:=.Cells(l, c), _
            LookIn:=xlValues, LookAt:=xlPart, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, MatchCase:=False)
        If sel Is Nothing Then Exit Do
        If sel.Column <= c And sel.Row <= l Then Exit Do
        c = sel.Column
        l = sel.Row
        msg = msg & traitement(l, c)
        n = n + 1       ' élément trouvé : traitement
    Loop
End With
MsgBox n & " éléments trouvés" & vbCrLf & msg


 
Est-ce que vous avez une idée ??
 
Je suis un peu perdu en vba, je suis plus habitué à faire du Java que du vba :(


---------------
.
Reply

Marsh Posté le 16-01-2011 à 14:50:49   

Reply

Marsh Posté le 18-01-2011 à 14:51:55    

Tes variables c et l sont declarées comment ?
 
Tu peux pas faire de "copier" ; "select" etc. dans une fonction que tu appelles dans Excel avec =traitement()
Le plus "simple" est de passer par les evenement de feuille_change
 
En gros :
 
Si le texte dans la cellule que je viens de saisir contient "=traitement" Alors
    Selectionner la cellule
    La copier
    Etc.
 
 
Explique plus explicitement ce que tu souhaites faire, je te filerai un coup de main :jap:

Message cité 1 fois
Message édité par SuppotDeSaTante le 18-01-2011 à 14:55:49

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 18-01-2011 à 15:45:04    

SuppotDeSaTante a écrit :

Tes variables c et l sont declarées comment ?
 
Tu peux pas faire de "copier" ; "select" etc. dans une fonction que tu appelles dans Excel avec =traitement()
Le plus "simple" est de passer par les evenement de feuille_change
 
En gros :
 
Si le texte dans la cellule que je viens de saisir contient "=traitement" Alors
    Selectionner la cellule
    La copier
    Etc.
 
 
Explique plus explicitement ce que tu souhaites faire, je te filerai un coup de main :jap:


 
Merci :-)
 
alors, tout bêtement, j'ai un fichier exel avec une prémière sheet qui contient une répetition de ceci:
 


texte fixe
- ligne vide-
Tableau sur N colonnes et M Lignes


 
Et j'aimerai copier / coller ces tableaux, faire un tableau par sheet par exemple.


---------------
.
Reply

Marsh Posté le 18-01-2011 à 16:04:11    

En fait ta fonction traitement te sert juste a mettre des []
 

Citation :

Sub didier1809()
With Sheets("Indiv" )  
    l = 1: c = 1  
    Do                      ' recherche  
        Set sel = .Cells.Find(What:=rech, after:=.Cells(l, c), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)  
        If sel Is Nothing Then Exit Do  
        If sel.Column <= c And sel.Row <= l Then Exit Do  
        c = sel.Column  
        l = sel.Row
         
       cellcontent = .Cells(c, l).Value  
        traitement = "[" & c & "," & l & "] " & cellcontent & vbCrLf

 
        msg = msg & traitement(l, c)  
 
       Range(Cells(c, l), Cells(c + 10, l + 4)).Select  
        Selection.Copy  
        Sheets("Sheet1" ).Select  
        Range("B" & l).Select  
        ActiveSheet.Paste  
        Application.CutCopyMode = False
 
         
        n = n + 1       ' élément trouvé : traitement  
    Loop  
End With  
MsgBox n & " éléments trouvés" & vbCrLf & msg
 
End Sub

Message cité 1 fois
Message édité par SuppotDeSaTante le 18-01-2011 à 16:10:53

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 18-01-2011 à 18:21:32    

SuppotDeSaTante a écrit :

En fait ta fonction traitement te sert juste a mettre des []
 

Citation :

Sub didier1809()
With Sheets("Indiv" )  
    l = 1: c = 1  
    Do                      ' recherche  
        Set sel = .Cells.Find(What:=rech, after:=.Cells(l, c), LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)  
        If sel Is Nothing Then Exit Do  
        If sel.Column <= c And sel.Row <= l Then Exit Do  
        c = sel.Column  
        l = sel.Row
         
       cellcontent = .Cells(c, l).Value  
        traitement = "[" & c & "," & l & "] " & cellcontent & vbCrLf

 
        msg = msg & traitement(l, c)  
 
       Range(Cells(c, l), Cells(c + 10, l + 4)).Select  
        Selection.Copy  
        Sheets("Sheet1" ).Select  
        Range("B" & l).Select  
        ActiveSheet.Paste  
        Application.CutCopyMode = False
 
         
        n = n + 1       ' élément trouvé : traitement  
    Loop  
End With  
MsgBox n & " éléments trouvés" & vbCrLf & msg
 
End Sub



 
 
Ca me retourne des [] oui, mais la 2e partie en rouge devrait faire des copier coller non ?


---------------
.
Reply

Marsh Posté le 18-01-2011 à 23:24:05    

Ui.
Si c'est possible, envoie le fichier...


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 19-01-2011 à 07:23:46    

SuppotDeSaTante a écrit :

Ui.
Si c'est possible, envoie le fichier...


 
http://www.4shared.com/file/YPL6mnam/pour_macro.html
 
Est-ce que tu y as accès ?


---------------
.
Reply

Marsh Posté le 19-01-2011 à 10:28:17    

Non, restriction au bureau inside...
 
Il y a mon mail dans mon profil ;)


---------------
Soyez malin, louez entre voisins !
Reply

Sujets relatifs:

Leave a Replay

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