Comment trouver toutes les valeur d'une colonne non continue
bassmart
Messages postés
281
Date d'inscription
Statut
Membre
Dernière intervention
-
Kalissi Messages postés 218 Date d'inscription Statut Membre Dernière intervention -
Kalissi Messages postés 218 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une macro qui trouve les valeurs présente dans la colonne C à partir de la ligne 5 et copie tous les numéro trouvés sur une autre feuille selon le type qui est déterminé avec la colonne 4 .
Tout ce passe bien si mes valeurs sont continue, mais dès qu'il y a une cellule vide, la macro arrête de compter le nombre de ligne même si j'ai d'autres valeurs après.
Est-ce possible de trouver toutes les valeurs de ma colonne C même si elles ne sont pas continue?
Je pense qu le problème vient de ma ligne qui détermine la "plage"!
Voici mon code:
Merci pour votre aide!
J'ai une macro qui trouve les valeurs présente dans la colonne C à partir de la ligne 5 et copie tous les numéro trouvés sur une autre feuille selon le type qui est déterminé avec la colonne 4 .
Tout ce passe bien si mes valeurs sont continue, mais dès qu'il y a une cellule vide, la macro arrête de compter le nombre de ligne même si j'ai d'autres valeurs après.
Est-ce possible de trouver toutes les valeurs de ma colonne C même si elles ne sont pas continue?
Je pense qu le problème vient de ma ligne qui détermine la "plage"!
Voici mon code:
Sub CopieFeuillets() ' Macro de Copie & de Tri Dim f As Worksheet Application.EnableEvents = False Application.ScreenUpdating = False For Each f In ActiveWorkbook.Worksheets f.Unprotect Next With Sheets("Coordonnées") For i = 1 To 5 On Error Resume Next Erase critères On Error GoTo 0 Select Case i Case 1 wsn = "FORAGE" critères = Array("F", "FC", "FS", "FSZ", "FCR") Col = "A" ' colonne dans laquelle mettre le n° de sondage, est également la colonne pour le tri PL = 8 'première ligne des données dans wsn tabtri = "A" & PL & ":N" ' tableau à trier Case 2 wsn = "CPTU" critères = Array("C", "CR", "FC", "M") Col = "A" PL = 7 tabtri = "A" & PL & ":O" Case 3 wsn = "Piézomètres" critères = Array("Z", "FSZ", "FZ") Col = "B" PL = 8 tabtri = "A" & PL & ":M" Case 4 wsn = "Inclinomètres" critères = Array("I") 'critères = "I" Col = "B" PL = 7 tabtri = "A" & PL & ":H" Case 5 wsn = "Tromino" critères = Array("V") Col = "B" PL = 8 tabtri = "A" & PL & ":J" End Select '---------- modif 09/05/2015 -------------- 'filtre critere .Range("$A$4:$N$64").AutoFilter Field:=4, Criteria1:=critères, Operator:=xlFilterValues 'on filtre les données de coordonnées 'mise en memoire plage Set plage = .Range(.Range("C5"), .Range("C5").End(xlDown)).SpecialCells(xlVisible) 'si critere n'existe pas: NbCel=1048512----> max ligne excel2007 a 2013 NbCel = plage.Count If NbCel < MaxLigInfos Then 'test si moins de ligne que const MaxLigInfos Set ws = Sheets(wsn) ' ws = référence de la feuille nl = ws.Cells(Rows.Count, Col).End(xlUp).Row ' nl pointeur de dernière ligne utilisée dans la feuille basé sur colonne col If nl <= PL Then nl = PL + 1 For Each r In plage ' on parcourt toutes les cellules sélectionnées de la colonne C, (r=cellule en cours) Set re = ws.Range(Col & ":" & Col).Find(r.Value, lookat:=xlWhole) 'on recherche le n°de sondage dans la colonne col If re Is Nothing Then 'si non trouvé 'ajoute une nouvelle ligne avant derniere ligne ws.Rows(nl).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'derniere ligne + 1 ws.Cells(nl, Col) = ws.Cells(nl - 1, Col) ws.Cells(nl - 1, Col) = r.Value ' on met le numéro de sondage en colonne col End If Next r With ws.Range(tabtri & nl) .Sort key1:=.Cells(1, Col), order1:=xlAscending, Header:=xlNo End With Else xx = UBound(critères) Crit = "<" For x = 0 To xx Crit = Crit & critères(x) & ";" Next x 'Crit = Crit & ">" 'MsgBox "Aucun sondages " & Crit & " trouvés & copiés !!!!!!", vbInformation End If Next i If Worksheets("Coordonnées").AutoFilterMode Then Worksheets("Coordonnées").AutoFilterMode = False End If End With For Each f In ActiveWorkbook.Worksheets f.Protect , AllowFormattingCells:=True, AllowFormattingRows:=True Next Application.EnableEvents = True Application.ScreenUpdating = True End Sub
Merci pour votre aide!
A voir également:
- Comment trouver toutes les valeur d'une colonne non continue
- Déplacer une colonne excel - Guide
- Comment trier une colonne sur excel - Guide
- Trouver adresse mac - Guide
- Colonne word - Guide
- Formule somme excel colonne - Guide
2 réponses
Bonsoir
peut être y a t il ce qu'il te faut là
https://www.developpez.net/forums/d450923/logiciels/microsoft-office/excel/contribuez/derniere-ligne-derniere-colonne-renseignees-d-feuille/
peut être y a t il ce qu'il te faut là
https://www.developpez.net/forums/d450923/logiciels/microsoft-office/excel/contribuez/derniere-ligne-derniere-colonne-renseignees-d-feuille/
J'ai essayé avec la fonction CurrentRegion sur la ligne: , mais j'ai un petit problème, il prend aussi la première valeur de la colonne "A".
D'où vient se problème?
Merci!
Il faudra attendre qu'un autre jette un oeil.
et ça marche avec mon tableau de test
Effectivement c'est un range, mais moi dans mon tableau, j'ai des cellules vides au travers des cellules avec des valeurs. Donc, avec votre méthode, il arrête à la première cellule vide de la colonne, comme cette ligne de code
Alors, je veux trouver la dernière ligne avec une valeur en ne tenant pas compte des cellules vides.
Merci!