Selection plage de données VBA

Selection plage de données VBA - VB/VBA/VBS - Programmation

Marsh Posté le 20-04-2015 à 15:48:13    

Bonjour,  
l'idée de ma macro serait de repertorier les matricules identiques ou non dans une de mes feuilles. Pour cela je supprime tout d'abord les lignes sans matricule présente dans mon fichier puis je fais un countIf (vba =NB.SI en excel) pour rechercher quel matricule se trouve dans la feuille précédente. Merci par avance pour votre aide!
 Pb : Je voudrais selectionner une plage de cellule sur ma feuille Log16 ( CountIf(F1.Range("D", Range("D" ).End(xlDown)), Range("D" & J))) mais j'ai une erreur de syntaxe dans mon code pouvez vous m'aider s'il vous plait?  
 

Code :
  1. Sub Macro1()
  2. '
  3. ' Macro1 Macro
  4. '
  5. Dim NbLg As Long
  6. Colonnes = Array("D" )
  7.   Set F1 = Sheets("Log16" )
  8.   Set F2 = Sheets("Log17" )
  9. With F1
  10.     Range("D:D" ).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  11. End With
  12. With F2
  13.     Range("D:D" ).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  14.    
  15.     NbLg = .Range("A" & Rows.Count).End(xlUp).Row
  16.    
  17.     For J = 2 To NbLg
  18.         F2.Range("F2" ).FormulaR1C1 = "= CountIf(F1.Range("D", Range("D" ).End(xlDown)), Range("D" & J))"
  19.     Next J
  20. End With


 
Cordialement,  
Jérémy

Reply

Marsh Posté le 20-04-2015 à 15:48:13   

Reply

Marsh Posté le 20-04-2015 à 18:45:46    

Ta ligne 22 as une erreur de syntaxe.
 
Dans une chaine de caractère, si tu veux qu'il y ai un " : il faut le doubler
"= CountIf(F1.Range("D", Range("D" ).End(xlDown)), Range("D" & J))"
deviens
"= CountIf(F1.Range(""D"", Range(""D"" ).End(xlDown)), Range(""D"" & J))"
 
Mais ça ne fonctionnera de toute façon pas car, dans une cellule F1.range ne veut rien dire :/
Ce que je comprend de ton problème c'est plutôt ça que tu veux :
"= CountIf(D:D, D" & J & " )"


Message édité par Arl Guhr le 20-04-2015 à 21:10:15

---------------
il s'appel le ronge me doute
Reply

Marsh Posté le 21-04-2015 à 18:32:21    

Bonjour,
 
Essaies :

Code :
  1. Option Explicit
  2. Sub Macro1()
  3. Dim F1 As Worksheet
  4. Dim F2 As Worksheet
  5. Dim rng As Range
  6. Dim NbLg As Long
  7. Dim j As Long
  8.   Set F1 = Worksheets("Log16" )
  9.   Set F2 = Worksheets("Log17" )
  10.   With F1
  11.     On Error Resume Next
  12.     .Range("D:D" ).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  13.     On Error GoTo 0
  14.   End With
  15.   With F2
  16.     On Error Resume Next
  17.     .Range("D:D" ).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  18.     On Error GoTo 0
  19.     NbLg = .Range("A" & Rows.Count).End(xlUp).Row
  20.     For j = 2 To NbLg
  21.       .Range("F" & j).FormulaR1C1Local = "=NB.SI(L2C4:L" & NbLg & "C4;LC(-2))"
  22.     Next j
  23.   End With
  24. End Sub


 
Edit : pour le cas ou il n'y a pas de cellules vides


Message édité par patrice33740 le 21-04-2015 à 18:42:50

---------------
Cordialement, Patrice
Reply

Sujets relatifs:

Leave a Replay

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