VBA Selection de cellules non vide.
Résolu/Fermé
2000Kennedy
Messages postés
40
Date d'inscription
mercredi 8 septembre 2010
Statut
Membre
Dernière intervention
16 novembre 2010
-
8 sept. 2010 à 12:35
2000Kennedy Messages postés 40 Date d'inscription mercredi 8 septembre 2010 Statut Membre Dernière intervention 16 novembre 2010 - 8 sept. 2010 à 15:03
2000Kennedy Messages postés 40 Date d'inscription mercredi 8 septembre 2010 Statut Membre Dernière intervention 16 novembre 2010 - 8 sept. 2010 à 15:03
A voir également:
- Cellule non vide vba
- Formate pour taxer client frigo vide - Forum Loisirs / Divertissements
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Supprimer page word vide - Guide
- Excel compter cellule couleur sans vba - Guide
- Excel cellule couleur si condition texte - Guide
4 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 8/09/2010 à 14:13
Modifié par pijaku le 8/09/2010 à 14:13
Bonjour,
Il te manque pas grand chose... La syntaxe pour dire : "première cellule vide de la colonne".
La dernière cellule remplie de la colonne A :
Donc :
1- Ta plage à copier (sur chaque feuille) est :
2- La cellule ou tu dois coller tes données est :
Sachant qu'il faut :
- éviter les ".Select"
- faire un test dans la boucle pour "esquiver" la feuille GCE_Globale_cible...
Ton code (annoté) devient donc :
Edit : code modifié suite à réponse de 2000kennedy
Cordialement,
-- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
Il te manque pas grand chose... La syntaxe pour dire : "première cellule vide de la colonne".
La dernière cellule remplie de la colonne A :
Dim DerniereLigne As Integer DerniereLigne = Range("A65536").End(xlUp).Row
Donc :
1- Ta plage à copier (sur chaque feuille) est :
Dim DerniereLigne As Integer DerniereLigne = Range("A65536").End(xlUp).Row Range("A4:A" & DerniereLigne).Copy
2- La cellule ou tu dois coller tes données est :
Sheets("GCE_Globale_cible").Range("B65536").End(xlUp).Offset(1, 0).Row
Sachant qu'il faut :
- éviter les ".Select"
- faire un test dans la boucle pour "esquiver" la feuille GCE_Globale_cible...
Ton code (annoté) devient donc :
Sub test() 'Déclaration des variables 'Ici on va désigner par Ws les différentes feuilles du classeur Dim Ws As Worksheet Dim DerniereLigne As Integer 'Pour toutes les feuilles dans le classeur actif For Each Ws In ThisWorkbook.Worksheets 'On ne fait rien si le nom de la feuille est "GCE_Globale_cible" If Ws.Name = "GCE_Globale_cible" Then 'sinon, si le nom de la feuille est différent de "GCE_Globale_cible" Else 'on détermine la dernière ligne remplie DerniereLigne = Ws.Range("A65536").End(xlUp).Row 'on copie la plage de A4 à la dernière ligne et on la colle 'dans la première cellule vide col B de la feuille "GCE_Globale_cible" Ws.Range("A4:A" & DerniereLigne).Copy Sheets("GCE_Globale_cible").Range("B65536").End(xlUp).Offset(1, 0) End If 'Feuille suivante s'il vous plait... Next Ws End Sub
Edit : code modifié suite à réponse de 2000kennedy
Cordialement,
-- Tout problème à sa solution. S'il n'y a pas de solution, ou est le problème? --
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
8 sept. 2010 à 13:08
8 sept. 2010 à 13:08
Bonjour,
Essaie avec ça :
;o)
Essaie avec ça :
Sub test(Nb_Onglet) Dim Derlig As Long Dim i As Long Dim j As Long Dim lig As Long lig = 4 For i = 1 To Nb_Onglet Derlig = Sheets(i).Range("A65536").End(xlUp).Row For j = 4 to Derlig If Sheets(i).Range("A" & j).Value <> "" Then Sheets("GCE_Globale_cible").Range("B" & lig).Value = Sheets(i).Range("A" & j).Value lig = lig + 1 End If Next j Next i End Sub
;o)
2000Kennedy
Messages postés
40
Date d'inscription
mercredi 8 septembre 2010
Statut
Membre
Dernière intervention
16 novembre 2010
2
8 sept. 2010 à 13:56
8 sept. 2010 à 13:56
Merci à tous les deux pour vos réponses ;)
ça marche maintenant.
Par contre Pijaku j'ai une erreur 1004 qui s'affiche pour la ligne
Range("A4:A" & DerniereLigne).Copy Sheets("GCE_Globale_cible").Range("B65536").End(xlUp).Offset(1, 0).Row
Il faut que je déclare quelque chose dans ma fonction principale?
ça marche maintenant.
Par contre Pijaku j'ai une erreur 1004 qui s'affiche pour la ligne
Range("A4:A" & DerniereLigne).Copy Sheets("GCE_Globale_cible").Range("B65536").End(xlUp).Offset(1, 0).Row
Il faut que je déclare quelque chose dans ma fonction principale?
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 8/09/2010 à 14:12
Modifié par pijaku le 8/09/2010 à 14:12
Eh oui!!! C'est cela de ne pas tester... Pardon... voici le code corrigé : (en gras les modifs...)
Sub test() 'Déclaration des variables 'Ici on va désigner par Ws les différentes feuilles du classeur Dim Ws As Worksheet Dim DerniereLigne As Integer 'Pour toutes les feuilles dans le classeur actif For Each Ws In ThisWorkbook.Worksheets 'On ne fait rien si le nom de la feuille est "GCE_Globale_cible" If Ws.Name = "GCE_Globale_cible" Then 'sinon, si le nom de la feuille est différent de "GCE_Globale_cible" Else 'on détermine la dernière ligne remplie DerniereLigne = Ws.Range("A65536").End(xlUp).Row 'on copie la plage de A4 à la dernière ligne et on la colle 'dans la première cellule vide col B de la feuille "GCE_Globale_cible" Ws.Range("A4:A" & DerniereLigne).Copy Sheets("GCE_Globale_cible").Range("B65536").End(xlUp).Offset(1, 0) 'ici j'ai supprimé .Row erreur d'innatention... End If 'Feuille suivante s'il vous plait... Next Ws End Sub
2000Kennedy
Messages postés
40
Date d'inscription
mercredi 8 septembre 2010
Statut
Membre
Dernière intervention
16 novembre 2010
2
Modifié par 2000Kennedy le 8/09/2010 à 15:05
Modifié par 2000Kennedy le 8/09/2010 à 15:05
Merci bien :)
Je me permet de vous embêter encore un peu :x
Imaginons, ce qui est le cas de mon nouveau soucis...
ce que j'ai:-----------------------------et ce que je souhaite obtenir:
A -------------------------------------------------------A
A--------------------------------------------------------B
A -------------------------------------------------------C
A--------------------------------------------------------
B--------------------------------------------------------
B--------------------------------------------------------
B--------------------------------------------------------
B--------------------------------------------------------
C
C
C
En fait voilà... Je pensais que ce que vous m'avez expliquer je pourrais l'appliquer à ma table excel. Voila mon problème complet:
J'ai un Tableau sous Excel, qui possède en colonne 2 informations différente, provenance et date. Sur 2 lignes, j'ai la catégorie du produit et le type de produit, c'est à dire que chaque catégorie est divisée en 3 types de produits. Je souhaiterais retrouver sur une ligne l'ensemble de ces informations, chaque colonne correspondrait à respectivement la provenance, la date, la catégorie du produit, le type de produit. Le but étant de faciliter la lecture au moment du basculement des informations dans ma BDD.
Bien sur des valeurs sont liées au tableau de départ et je souhaiterais les retrouver dans le tableau d'arrivée.
------------------------ Cat produit 1-----------------Cat produit 2
provenance-date---type1----type2-type3----------type1--type2-type3
france---------jan------3--------1-----2 ----------------------2------1------3
france---------fev------1--------5-----0 -----------------------8-----2------1
espagne------jan-----x---------x---- x-----------------------x-----x-------x
espagne------fev -----x---------x----x-----------------------x-----x------x
ça c'est le tableau de départ et je voudrais:
provenance---cat produit---type---jan--fev
france--------Cat produit1-type1---3----1
france--------Cat produit1-type2---1----5
france--------Cat produit1-type3---2----0
france--------Cat produit2-type1---2----8
etc------------etc----------etc
Je m'exprime peut-être mal :x Mais est ce qu'il existe une fonction vba ou une manip excel qui me permettrait de transformer le tableau 1 dans la forme du tableau 2 Sachant que les données sont liées?
Je me permet de vous embêter encore un peu :x
Imaginons, ce qui est le cas de mon nouveau soucis...
ce que j'ai:-----------------------------et ce que je souhaite obtenir:
A -------------------------------------------------------A
A--------------------------------------------------------B
A -------------------------------------------------------C
A--------------------------------------------------------
B--------------------------------------------------------
B--------------------------------------------------------
B--------------------------------------------------------
B--------------------------------------------------------
C
C
C
En fait voilà... Je pensais que ce que vous m'avez expliquer je pourrais l'appliquer à ma table excel. Voila mon problème complet:
J'ai un Tableau sous Excel, qui possède en colonne 2 informations différente, provenance et date. Sur 2 lignes, j'ai la catégorie du produit et le type de produit, c'est à dire que chaque catégorie est divisée en 3 types de produits. Je souhaiterais retrouver sur une ligne l'ensemble de ces informations, chaque colonne correspondrait à respectivement la provenance, la date, la catégorie du produit, le type de produit. Le but étant de faciliter la lecture au moment du basculement des informations dans ma BDD.
Bien sur des valeurs sont liées au tableau de départ et je souhaiterais les retrouver dans le tableau d'arrivée.
------------------------ Cat produit 1-----------------Cat produit 2
provenance-date---type1----type2-type3----------type1--type2-type3
france---------jan------3--------1-----2 ----------------------2------1------3
france---------fev------1--------5-----0 -----------------------8-----2------1
espagne------jan-----x---------x---- x-----------------------x-----x-------x
espagne------fev -----x---------x----x-----------------------x-----x------x
ça c'est le tableau de départ et je voudrais:
provenance---cat produit---type---jan--fev
france--------Cat produit1-type1---3----1
france--------Cat produit1-type2---1----5
france--------Cat produit1-type3---2----0
france--------Cat produit2-type1---2----8
etc------------etc----------etc
Je m'exprime peut-être mal :x Mais est ce qu'il existe une fonction vba ou une manip excel qui me permettrait de transformer le tableau 1 dans la forme du tableau 2 Sachant que les données sont liées?