[VBA] Passer au suite du code si sélection vide

bjaouen

XLDnaute Nouveau
Bonjour le forum :)

Je sollicite votre aide car je n'arrive pas à trouver la solution à mon problème :/

Je cherche à faire un copier coller de données en fonction de plusieurs critères (ce que j'ai réussi à faire).


Cependant, dès lors qu'il n'y a pas de sélection disponible, le code se bloque avec une erreur 1004.
Je voulais donc mettre une condition du genre :

Si la sélection est vide, alors passer à la suite du code, sinon faire le copier/coller.


C'est cette partie où je bloque .. :/

Voila le fichier en espérant que vous trouverez :)
(Feuille INVENTAIRE, Macro "EXPORT_COMMANDES")

Fichier-F-B.xlsm
 

vgendron

XLDnaute Barbatruc
Re : [VBA] Passer au suite du code si sélection vide

bonjour

je n'ai pas accès à ton fichier, mais une idée:
prendre le problème à l'envers.. ne faire la copier coller que si la selection est NON vide..
if not selection is empty then
copy... paste..
end if
 

bjaouen

XLDnaute Nouveau
Re : [VBA] Passer au suite du code si sélection vide

Bonjour et merci d'avoir répondu aussi vite :)

J'ai essayé mais ça ne fonctionne pas non plus.
Ca me marque : Pas de cellule correspondante :/

Voila le code :


'#### CDP ####

'Activer la feuille concernée
Worksheets("CDP").Activate

'Effacer les données présentes
Range("A5:L26").ClearContents

'Mise en place des filtres
Worksheets("INVENTAIRE").Activate
ActiveSheet.Range("$C$4:$S$965").AutoFilter Field:=3, Criteria1:= _
"Coup de Pates"
ActiveSheet.Range("$C$4:$S$965").AutoFilter Field:=17, Criteria1:=">0", _
Operator:=xlAnd



If Not IsEmpty(Range("C7:S965")) Then
Sheets("INVENTAIRE").Range("C7:S965").SpecialCells(xlVisible).Copy

'Coller les données
Worksheets("CDP").Activate
Range("A5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

Range("A5").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

'Cacher les colonnes en trop
Columns("I:K").Hidden = True

End If

'Supprimer le filtre mis en place dans "INVENTAIRE"
Worksheets("INVENTAIRE").Activate
ActiveSheet.ShowAllData


Peut-être qu'en voyant ça, tu auras une jolie idée :)
 

Paf

XLDnaute Barbatruc
Re : [VBA] Passer au suite du code si sélection vide

Bonjour bjaouen, vgendron :)


remplacer
Code:
If Not IsEmpty(Range("C7:S965")) Then

par

Code:
If Application.Subtotal(3, Sheets("INVENTAIRE").Range("C7:S965"))> 0 then

A+
 

bjaouen

XLDnaute Nouveau
Re : [VBA] Passer au suite du code si sélection vide

Bonjour Paf (j'adore ton surnom x)

Hallelujah ça marche !!!!

Pourrais-tu m'expliquer un peu la fonction que tu as utilisé ? (j'avoue que j'ai un peu de mal à comprendre).
Est-ce que ça serait :
Si la cellule filtrée (field 3) est supérieure à 0, alors faire le copier coller ? :)

En te remerciant :)
 

Paf

XLDnaute Barbatruc
Re : [VBA] Passer au suite du code si sélection vide

Re,


Application.Subtotal(3, Sheets("INVENTAIRE").Range("C7:S965"))

calcule le sous-total de la plage désignée, selon la fonction utilisée pour calculer le sous-total (ici 3 soit NBVAL)

pour les détails regarder l'aide de la fonction SOUS.TOTAL

A+
 

Discussions similaires

Réponses
4
Affichages
220
Réponses
5
Affichages
198
Réponses
4
Affichages
199

Statistiques des forums

Discussions
312 355
Messages
2 087 549
Membres
103 588
dernier inscrit
Tom59300Tom