macro recherche, decalage et loop

akrillon

XLDnaute Nouveau
Bonjour,

Je suis sur de la récupération de donnée j'essaie de faire une petite macro pour me simplifier la vie mais pour l'instant c'est justement le contraire ^^

Au lieu de me lancer dans des explications indigeste, je vous met un petit fichier d'exemple.
Ma macro d'essai est dans le boutton et pour l'instant ne fonctionne pas si vous avez des pistes je suis prenneur! :)

Merci à vous
 

Pièces jointes

  • recherche.xlsm
    24.4 KB · Affichages: 48
  • recherche.xlsm
    24.4 KB · Affichages: 57
  • recherche.xlsm
    24.4 KB · Affichages: 60

VDAVID

XLDnaute Impliqué
Re : macro recherche, decalage et loop

Bonjour Akrillon,

Peut-être comme ceci:

Code:
Sub CC()

    Dim i As Integer, Nb As Integer
    Dim c As Range
    
    Nb = 1
    For i = 2 To Range("A65536").End(xlUp).Row
        
        Set c = Range("H" & Nb & ":H" & Range("H65536").End(xlUp).Row).Find("x", , xlValues, xlWhole)
        If Not c Is Nothing Then
            
            Range("A" & i & ":D" & i).Copy Destination:=Cells(c.Row, c.Column + 1)
            Nb = c.Row + 1
        
        End If
    
    Next i
    
End Sub

N'hésite pas si tu as des questions !
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : macro recherche, decalage et loop

Bonjour Akrillon, bonjour le forum,

Peut-être comme ça :

Code:
Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELlule)
Dim TB() As Integer 'déclare le tableau de variables TB (TaBleau)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Sheets("Feuil1") 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, 8).End(xlUp).Row 'définit la dernière cellule éditée DL de la colonne 8 (=H) de l'onglet O
Set PL = O.Range("H2:H" & DL) 'définit la plage PL
For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
    If CEL.Value = "x" Then 'condition : si la cellule vaut "x"
        ReDim Preserve TB(I) 'redimensionne le tableau de variables TB
        TB(I) = CEL.Row 'récupère le numéro de ligne dans la variable indexée TB(I)
        I = I + 1 'incrémente I
    End If 'fin de la condition
Next CEL 'prochaine cellule de la boucle
'on obtient dans cet exemple un tableau de 6 variables TB(0) à TB(5)
DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'redéfinit la variable DL (ernière cellule éditée DL de la colonne 1 (=A) de l'onglet O)
For I = 2 To DL 'boucle de la ligne 2 à DL
    O.Cells(I, 1).Resize(, 4).Copy O.Cells(TB(I - 2), 9) 'copie la cellule ligne 1, colonne 1 redimensionnée jusqu'à la colonne D et colle dans la cellule ligne TB(I-2), colonne 9
Next I 'prochaine ligne de la boucle
'cette macro plantera si il y a plus de ligne en colonne A que de "x" en colonne H...
End Sub

[Édition]
Bonjour David on s'est croisé...
 

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 571
Messages
2 089 809
Membres
104 278
dernier inscrit
LENZY