Mettre cellule de colonne dans autres feuille
Bonjour,
je désire que les cellules pleine de mes colonne B de toutes mes feuilles soit mise dans la feuille (toute la ligne) récap je n'ai pas vraiment trouvé ce que je voulais dans le forum quelqu'un peut il m'aider
merci d'avance
Bonsoir Smorvan, bonsoir le forum,
Essaie comme ça :
Sub Macro1()
Dim R As Worksheet 'déclare la variable R (onglet Recape)
Dim O As Worksheet 'déclare la variable O (Onglets)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Byte 'déclare la variable J (incrément)
Dim K As Integer 'déclare la variable K (incrément)
Dim TL() As Variant 'déclare la variable TL (Tableau des Lignes)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Set R = Worksheets("recape") 'définit l'onglet R
For Each O In Sheets 'boucle 1 : sur tous les onglets O du classeur
If O.Name <> "recape" Then 'condition 1 : si le nom de l'onglet O n'est pas "recape"
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeurs TV
K = 1 'initialise la variable K
For I = 2 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
If TV(I, 2) <> 0 Then 'condition 2 : si la données ligne I colonne 2 (=> colonne B) de TV est différente de 0
ReDim Preserve TL(1 To 4, 1 To K) 'redimensionne le tableau des lignes TL (4 lignes, K colonnes)
For J = 1 To 4 'boucle 3 : sur les 4 colonnes J du tableau des valeurs TV
TL(J, K) = TV(I, J) 'récupère dans la ligne J de TL la donnée en colonne J de TV (= Transposition)
Next J 'prochaine colonne de la boucle 3
K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL)
End If 'fin de la condition 2
Next I 'prochaine ligne de la boucle 2
'définit la cellule de destination DEST (A2 si A2 est vide, sinon la première cellule vide de la colonne A de l'onglet R)
Set DEST = IIf(R.Range("A2") = "", R.Range("A2"), R.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0))
If K > 1 Then 'condition 3 : si K est supérieure à 1
'renvoie dans la cellule DEST redimensionnée le tableau TL tranposé
DEST.Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
Erase TV 'vide le tableau TV
Erase TL 'vide le tableau TL
End If 'fin de la condition 3
End If 'fin de la condition 1
Next O 'prochain onglet de la boucle 1
End SubBonsoir smorvan, ThauThème,
ou comme ça...
Private Sub cmdGO_Click()
'
Dim wks As Worksheet
'
Application.ScreenUpdating = False
'
iLig = 1
For x = 1 To Sheets.Count
If Sheets(x).Name <> "Recap" Then
With Sheets(x)
iRow = .Range("B" & Rows.Count).End(xlUp).Row
For y = 2 To iRow
If .Cells(y, 2) > 0 Then
iLig = iLig + 1
Worksheets("Recap").Range("A" & iLig).Resize(1, .Cells(y, Columns.Count).End(xlToLeft).Column).Value = _
.Range("A" & y).Resize(1, .Cells(y, Columns.Count).End(xlToLeft).Column).Value
End If
Next
End With
End If
Next
'
Application.ScreenUpdating = True
'
End Sub8)
A+
bonjour
merci pour vos réponses mais les codes ne fonctionnent pas sur mon tableau mes colonnes vont jusqu’à x, si je re clique sur exécuter la macro sa me remet les lignes en dessous de celle existante, sa met met les cellules vides de la colonne B.
Par contre j'ai trouver ce code sur le forum qui conviendrait sauf qu'il me prend toute mes feuilles
Sub transfert()
'Macro Dan pour CecileCosma - 20/09/12
Dim dlgR As Integer, dlgi As Integer
Dim i As Byte
With Sheets("RECAPE")
dlgR = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A2:X" & dlgR).ClearContents
End With
For i = 1 To Worksheets.Count
Select Case UCase(Sheets(i).Name)
Case Is = "RECAPE"
Case Is = "Feuil4"
Case Is = "BASE_BUDGET"
Case Is = "BUDGET"
Case Is = "BASE_TURNOVER"
Case Is = "TURNOVER"
Case Else
dlgR = Sheets("RECAPE").Range("B" & Rows.Count).End(xlUp).Row
With Sheets(i)
dlgi = .Range("B" & Rows.Count).End(xlUp).Row
.Range("A2:X" & dlgi).Copy Sheets("RECAPE").Range("A" & dlgR + 1)
End With
End Select
Next
End Subj'ai beau chercher je ne trouve pas la solution pour qu'il ne me prennent en compte que les feuilles 4,5,6,7,etc.
il me prend en compte les cellules vides de la colonne B mais je ne veut que celle qui sont pleine ou supérieur a zero (vide serait mieux)
merci d'avance pour le coup de main
Bonjour le fil, bonjour le forum,
Désolé Smorvan mais le code que je t'ai fourni fonctionne parfaitement avec le fichier que tu as proposé car je l'ai testé avant de te le proposer. Si tes colonnes vont jusqu'à x, tu aurais dû mettre un exemple qui correspondait à ton cas !...
Tu n'avais pas mentionné si tu voulais que l'onglet recape soit remis à zéro avant de relancer la macro. Donc, j'ai proposé un code qui ajoute les lignes en-dessous des anciennes. Il me semble que Curulis aussi. Que veux-tu, nous n'avons pas une boule de cristal !...
Bref, si tu veux de l'aide commence par envoyer des explications claires et un fichier exemple adéquat. Après tu pourras te plaindre que ça ne marche pas !
Salut tout le monde,
Bonjour ThauThème,
j'ai l'impression que tu n'as même pas essayé ma macro!
- elle inscrit d'office à partir de la ligne 2 ;
- j'ai justement fait en sorte qu'elle copie les lignes entières, quelle que soit leur longueur ;
- elle évite les lignes dont la "B" = 0 ou rien.
A+
ThauThème a écrit :Bonjour le fil, bonjour le forum,
Désolé Smorvan mais le code que je t'ai fourni fonctionne parfaitement avec le fichier que tu as proposé car je l'ai testé avant de te le proposer. Si tes colonnes vont jusqu'à x, tu aurais dû mettre un exemple qui correspondait à ton cas !...
Tu n'avais pas mentionné si tu voulais que l'onglet recape soit remis à zéro avant de relancer la macro. Donc, j'ai proposé un code qui ajoute les lignes en-dessous des anciennes. Il me semble que Curulis aussi. Que veux-tu, nous n'avons pas une boule de cristal !...
Bref, si tu veux de l'aide commence par envoyer des explications claires et un fichier exemple adéquat. Après tu pourras te plaindre que ça ne marche pas !
Bonjour,
je ne voulait pas te fâcher ThauThème en disant que sa ne fonctionnait pas mais en reprenant le fichier joint j'obtiens ceci
A B C D
0 18 1
0 18 2
0 6
0 18 1 ww
0 8 1 x
0 5 2 xx
0 1 6 xxx
0 18 1 ww
0 18 2 www
0 8 1 x
0 18 2 xx
dans la colonne B j'ai les cellules vides j'ai besoin des cellules pleine uniquement afin de n'avoir sous les yeux que ce qui m'intéresse
et désolé de ne pas avoir préciser que j'ai besoin que ce soit toute la ligne qui soit recopier et non pas les 4 premières colonne,et il faut qu'il y ai remise a zéro
encore dsl
cordialement
curulis57 a écrit :Salut tout le monde,
Bonjour ThauThème,
j'ai l'impression que tu n'as même pas essayé ma macro!
- elle inscrit d'office à partir de la ligne 2 ;
- j'ai justement fait en sorte qu'elle copie les lignes entières, quelle que soit leur longueur ;
- elle évite les lignes dont la "B" = 0 ou rien.
A+
Bonjour,
je ne voulait pas te fâcher curulis57 idem en disant que sa ne fonctionnait pas
il faut qu'il y ai remise a zéro chose que je n'ai pas préciser
encore dsl
cordialement
Re: mettre cellule de colon
curulis57 a écrit :Salut smorvan,
avec une petite instruction de plus...
A+
Impeccable curulis57 sa à l'air de fonctionner maintenant dans mon fichier j'ai quelques feuille que je voudrais pas voir dans ma récap genre planing pour l'aune l'autre coef et d'autre a venir si je ne veut pas les avoir dans ma récap je doit me faire un code supplémentaire si tu as sa en stock je suis preneur
merci encore
Salut smorvan,
j'ai quelques feuille que je voudrais pas voir dans ma récap genre planing pour l'aune l'autre coef et d'autre a venir
Ça, genre, ce n'est pas bon!
Tu peux émettre toutes les conditions mais pour permettre à ta macro de vivre sans souci, il faut que tu mettes au point un système de nommage de tes feuilles pour lui permettre de repérer les feuilles à exclure du calcul!
- par exemple, les feuilles à calculer = C_..xxx... ou xxx_C
- les feuilles à exclure = P_...xxx... ou xxx_P
Genre, tu comprends?
A+