Contrôler Selection Non Vide Avant Copier/Coller

ZeBilou

XLDnaute Nouveau
Bonjour au forum,
Je travaille actuellement à créer un fichier d'alertes pour ma société. En voici le principe:

1/ Sur une feuille (Portfolio), je récupère les lignes de commande enregistrées dans notre ERP (lien ODBC avec une query qui fait le bon select des infos requises)

2/ Sur un 2ème feuille (Alertes), je souhaite faire apparaître les lignes qui sont en retard de livraison ou qui sont en retard au planning (tout ceci est géré par des statuts dans l'onglet Portfolio).

Pour ce faire, je passe dans mon code plusieurs conditions de filtres (sur 4 colonnes) pour avoir les lignes qui répondent aux critères dans la feuille Portfolio. Ensuite, je copie ces lignes et les colle dans la feuille Alerte. Tout ceci fonctionne très bien, SAUF que:

Je souhaiterai ajouter à mon code une instruction permettant de ne pas faire la copie si le résultat obtenu après application des critères est nul (aucune ligne n'est renvoyée car aucun enregistrement ne correspond à ma sélection). Et là, j'avoue que je sèche...Etant très débutant en VBA, je ne sais comment instruire ce contrôle. C'est sûrement tout bête...

Quelqu'un peut-il m'aiguiller? Merci beaucoup!
 

Pierrot93

XLDnaute Barbatruc
Re : Contrôler Selection Non Vide Avant Copier/Coller

Bonjour,

essaye comme ceci, suppose la première ligne composée des titres de colonnes...
Code:
Dim p As Range
Set p = Range("_FilterDatabase")
If WorksheetFunction.Subtotal(3, p.Offset(1).Resize(p.Rows.Count - 1, 1)) > 0 Then

bon après midi
@+
 

Hippolite

XLDnaute Accro
Re : Contrôler Selection Non Vide Avant Copier/Coller

Bonjour,
Sans exemple joint, ni explications sur la façon dont tu fais ta sélection, je ne peux te donner une réponse précise.
Je vois deux solutions :
1- Tu comptes les lignes pour t'assurer qu'elles existent
2- Si ta sélection vide provoque une erreur, tu fais une gestion d'erreur, par exemple :
VB:
    On Error GoTo ErrorHandler ' active la gestion d'erreur
    Selection.SpecialCells(xlCellTypeVisible).Copy
    On Error GoTo 0 ' désactive la gestion d'erreur
    'instructions coller...
    
ErrorHandler: 'gestion des erreurs
    If Err.Number = 1004 Then ' évalue le numéro d'erreur
        MsgBox "pas de sélection à copier" 'instructions
    End If
A+


Pas rafraîchi, bonjour Pierrot
 

ZeBilou

XLDnaute Nouveau
Re : Contrôler Selection Non Vide Avant Copier/Coller

Bonjour,
Merci pour ces réponses.
Pour ce qui concerne la façon dont j'opère la sélection, je pense que c'est très très largement perfectible (ca fait 2 jours que je fais du VBA, donc forcément...)
VB:
Dim Dat As Date
Dim VarSheet As String

VarSheet = ActiveSheet.Name
Dat = Format(Date, "mm / dd / yyyy")
Sheets("Portfolio").Activate
    ActiveSheet.ListObjects("Tableau_LYIS02_F4211").Range.AutoFilter Field:=27, _
    Criteria1:="90", Operator:=xlOr, Criteria2:=""
    ActiveSheet.ListObjects("Tableau_LYIS02_F4211").Range.AutoFilter Field:=20, _
        Criteria1:="560"
    ActiveSheet.ListObjects("Tableau_LYIS02_F4211").Range.AutoFilter Field:=11, _
        Criteria1:="<" & Dat
    ActiveSheet.ListObjects("Tableau_LYIS02_F4211").Range.AutoFilter Field:=4, _
        Criteria1:=Array("W", "S", "D1"), Operator:=xlFilterValues 
Range("A2:A65536,C2:D65536,K2:K65536,T2:V65536,Y2:AA65536").SpecialCells(xlVisible).Copy
Sheets("Alerta TR").Activate
Sheets("Alerta TR").Range("A6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Application.CutCopyMode = False
Sheets("Portfolio").Activate
ActiveSheet.ShowAllData
Sheets(VarSheet).Activate
Cells(6, 1).Select

Je vais essayer d'avancer avec la gestion d'erreur pour pratiquer la chose!

Sinon l'instruction ci-après (proposition de Pierrot93) retourne un code erreur '1004'
Set p = Range("_FilterDatabase")
If WorksheetFunction.Subtotal(3, p.Offset(1).Resize(p.Rows.Count - 1, 1)) > 0 Then

: XPath : <La plage spécifiée n'est pas valide pour l'une ou plusieurs des raisons suivantes :
•La plage fait référence à des cellules figurant dans plusieurs colonnes.
•La plage contient des cellules mappées provenant de plusieurs mappages

Au plaisir de vous lire.
 

Pierrot93

XLDnaute Barbatruc
Re : Contrôler Selection Non Vide Avant Copier/Coller

Re, bonjour Hippo

Pour ce faire, je passe dans mon code plusieurs conditions de filtres (sur 4 colonnes) pour avoir les lignes qui répondent aux critères dans la feuille Portfolio.
Désolé, mais en fonction de ceci, j'avais cru que tu utilisais un filtre auto ou un filtre élaboré.... ce qui explique l'erreur....
 

Discussions similaires

Réponses
6
Affichages
237
Réponses
5
Affichages
355
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 338
Messages
2 087 403
Membres
103 536
dernier inscrit
komivi