Bonjour a tous le monde
Comment sélectionner et copier en VBA toutes les cellules NON VIDE qui se trouve dans la plage "M2" jusqu’à "Px"
Merci pour votre aide et a bientot
Cordialement
Bonjour a tous le monde
Comment sélectionner et copier en VBA toutes les cellules NON VIDE qui se trouve dans la plage "M2" jusqu’à "Px"
Merci pour votre aide et a bientot
Cordialement
Bonjour,
déjà pas besoin de sélectionner !
Pas très clair mais via un filtre et une simple copie …
Ou encore mais j'aime moins via la méthode SpecialsCells à la place du filtre.
___________________________________________________________________________________________________________Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
Bonjour Marc-L et merci pour votre réponse
Moi je cherche a utilisé un code VBA pour sélectionner et copier toutes les cellules de la plage M2 jusqu'a Px (sachant que x est variable)
Cordialement et a bientot
Description de l'adresse globale des données …
Et encore une fois il est inutile de sélectionner quoique ce soit !
Sinon pour sélectionner commencer par l'Enregistreur de macros puis opérer manuellement
puis poster le code ainsi généré à des fins d'optimisation (sans sélectionner donc) …
Encore merci Marc-L, effectivement j'utilise l'enregistreur de macro et voici le bout de code
Si il y a plusieurs ligne dans les colonnes M a P cela marche très bien mais le problème lorsqu'il y a une seul ligne il va me sélectionner tous les cellules même les vides alors que mois je veut qu'il sélectionne que les cellules contenant des données.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Range("m2").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy
J’espère être claire Marc-L
Merci et a bientot
Quelle est la première cellule de la plage globale et la dernière ? (exemple A1 et Z999)
Et indiquer si la table a été bien conçue c'est à dire sans colonne ni ligne totalement vide en son sein …
la table a pour entête
Colonne M N O P
Insertion Date Libelle Montant
La première cellule est "M2"
Cette table se rempli via un filtre avancé donc je ne peut pas savoir la limite de la table jusqu’à la colonne P (elle peut avoir 1 seul ligne comme 10 millions)
Cordialement
Donc la colonne N et Q sont entièrement vides ?
Et pour copier vers où, la destination …
Bon regardons les choses avec calme et sérénité.
ai je bien compris?
Les colonnes M N O P semble être en fait une zone d'extraction dont les en tête seraient :Insertion Date Libelle Montant , provenant d'une BD .
Dans une base de données, les lignes sont en fait des "fiches". s'il y a une cellule vide dans une colonne, elle doit rester vide, sinon on mélange les valeurs des fiches. Si maintenant il y a des lignes qui sont intégralement vide, il ne reste plus qu'a refaire une extraction depuis la nouvelle Zone d'extraction vers une Z extract à créer, avec un critère <>0.
Sinon, si mélanger les fiches ne vous dérange pas, vous faites une boucle successivement sur les quatres colonnes, supprimant la cellule avec déport vers le haut.
Espérant que celà vous aidera
Cordialement![]()
Merci vous tous
Marc-L
Le coller sera dans la première ligne vide de la colonne A
Transitoire je vais vous relire afin de bien vous comprendre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Cells(Rows.Count, 1).End(xlUp)(2).Select ActiveSheet.Paste
Cordialement
Me suis trompé, je voulais demander les colonnes avant M et après P sont-elles vides ou pas ? (L & Q donc)
Tu peux afficher une capture, sinon joindre un fichier enregistré au format .xlsx (donc sans code) …
Alors une seconde copie est inutile, il suffit juste de corriger les critères du filtre avancé
pour copier directement le résultat attendu dans la colonne A !
Voici un bout du code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 Sub selec() Columns("A:D").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _ "I2:I3"), CopyToRange:=Range("M1:P1"), Unique:=False If Range("m2") = "" Then Exit Sub Range("m2").Select Range(Selection, Selection.End(xlDown)).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy Cells(Rows.Count, 1).End(xlUp)(2).Select ActiveSheet.Paste
Cordialement
If [M2].Value > "" Then [M1].CurrentRegion.Offset(1).Copy Cells(Rows.Count, 1).End(xlUp)(2) …
Mes respects Marc-L
c'est parfait
Cordialement et a bientôt
Partager