VBA Selection de cellules non vide.
Résolu
2000Kennedy
Messages postés
40
Date d'inscription
Statut
Membre
Dernière intervention
-
2000Kennedy Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
2000Kennedy Messages postés 40 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Cellule non vide vba
- Supprimer page word vide - Guide
- Excel compter cellule couleur sans vba - Guide
- Caractere vide - Guide
- Excel cellule couleur si condition texte - Guide
- Coeur vide - Forum Facebook
4 réponses
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? --
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)
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?
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
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?