Copie des lignes contenant une valeur numerique

camadian

XLDnaute Junior
Bonjour le forum
dans mon fichier excel j'essaye de sélectionner les lignes qui ont une valeur numérique en colonne A puis de les copier dans dans l'onglet plans
si quelqu'un peut m'aider ou m'expliquer

Un grand merci
A+
Camadian
 

Pièces jointes

  • 2332-9600--A-ENS SONDE DE PRELEVEMENT .xls
    36 KB · Affichages: 73

Robert

XLDnaute Barbatruc
Repose en paix
Re : Copie des lignes contenant une valeur numerique

Bonjour Camdian, bonjour le forum,

peut-être comme ça :
Code:
Private Sub CommandButton2_Click()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dest As Range 'déclare la variable dest (DESTination)
Dim y As Byte 'déclare la variable y (incrément de colonne)
 
'boucle 1 : sur toutes les cellules éditées cel de la colonne A de l'onglet "donnees"
For Each cel In Sheets("donnees").Range("A1:A" & Sheets("donnees").Cells(Application.Rows.Count, 1).End(xlUp).Row)
    If IsNumeric(cel.Value) = True Then 'condition : si la valeur de la cellule est numérique
        Set dest = Sheets("plans").Range("A65536").End(xlUp).Offset(1, 0) 'définit la cellule de destination
        For y = 1 To 4 'boucle 2 : sur 4 colonnes
            dest.Offset(0, y - 1) = Sheets("donnees").Cells(cel.Row, y) 'place en dest la valeur de cel (en décalant)
        Next 'prochaine colonne de la boucle 2
          Range(cel, cel.Offset(0, 3)).ClearContents 'efface le contenu de la ligne de cel
    End If 'fin de la condition
Next 'prochaine cellule de la boucle 2
End Sub
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Copie des lignes contenant une valeur numerique

Bonjour,
Code:
=SI(LIGNES($1:1)<=NB(donnees!$A$1:$A$35);INDEX(donnees!A$1:A$35;PETITE.VALEUR(SI(ESTNUM(donnees!$A$1:$A$35);LIGNE(donnees!A$1:A$35));LIGNES($1:1)));"")
Formule à valider par Ctrl, Maj et entrée et à tirer vers la droite et le bas.
A+
Edit : bonjour Robert
 

david84

XLDnaute Barbatruc
Re : Copie des lignes contenant une valeur numerique

Re
Autre possibilité à tester en VBA :
Code:
Sub test()
Dim Ref As Range, Plage As Range, Dest As Range
Application.ScreenUpdating = False
Set Ref = Worksheets("donnees").Range([A1], Range("A" & Rows.Count).End(xlUp))
Set Plage = Worksheets("donnees").[A1].CurrentRegion
Set Dest = Worksheets("Plans").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
j = Dest.Row - 1
    For i = 1 To Plage.Rows.Count
        If IsNumeric(Cells(i, 1)) Then
               Plage.Range(Cells(i, 1), Cells(i, Plage.Columns.Count)).Copy Destination _
               :=Dest.Cells(j, 1)
         j = j + 1
        End If
    Next i
Application.ScreenUpdating = True
End Sub
Peut-être que la boucle sur les colonnes ne s'impose pas et que la copie de la ligne complète à la place nous fait gagner du temps (mais peut-être suis-je à côté de la plaque:confused:...).
A+
 

camadian

XLDnaute Junior
Re : Copie des lignes contenant une valeur numerique

Merci David
Je viens de tester ca marche aussi bien
c'est vrai que je cherche juste a copier les lignes
mon fichier ne dépassera jamais plus de 60 lignes donc je ne sais pas si je gagnerai beaucoup de tps
mais ces 2 possibilités vont pouvoir alimenter ma base de connaissance
Encore un grand merci a toi
Camadian
 

Discussions similaires

Réponses
6
Affichages
185

Statistiques des forums

Discussions
312 755
Messages
2 091 716
Membres
105 056
dernier inscrit
David Primo