COPIER COLLER les cellules non-vides

Le
Sunburn
Bonjour,
je voudrais pouvoir coller sur la feuille "GA1" à partir de la cellule "B4",
les celulles non vides qui se trouvent sur la page "C" sur la plage B14:M49.
Et après, même opération à la suite de ma feuille "GA1", pour les cellules
de la page "C" plage B234:M269.

Je vous remecie.
Yann
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sunburn
Le #4565291
Une petite précision, de taille je pense:
ma plage B14:M49 porte le nom "SYNTH1", et je voudrais utiliser le nom des
plages (car si j'insère des lignes, ma macro ne sera plus fonctionnelle).
De plus, cette plage est colorée, mais je ne veux reprendre que les lignes
ou au moins une cellule n'est pas vide.

J'ai essayé ça, sans réussite totale :
----
Sub SYNTHESE()
Sheets("C").Select
Range("B1:M1").Copy Sheets("G1B").Range("B" &
Sheets("G1B").Range("B65536").End(xlUp).Row + 1)
Sheets("C").Select
Range("B14:M30").Copy Sheets("G1B").Range("B" &
Sheets("G1B").Range("B65536").End(xlUp).Row + 1)
End Sub
------
Merci.Yann


Bonjour,
je voudrais pouvoir coller sur la feuille "GA1" à partir de la cellule "B4",
les celulles non vides qui se trouvent sur la page "C" sur la plage B14:M49.
Et après, même opération à la suite de ma feuille "GA1", pour les cellules
de la page "C" plage B234:M269.

Je vous remecie.
Yann


FFO
Le #4565231
Salut à toi
Comment recopie t'on chaque cellule non vide :

En ligne ???
n = 0
For Each c In Worksheets("C").Range("B14", "M49")
If c <> "" Then
GA1.Range("B4").offset(0,n) = c
n = n + 1
End If
Next
For Each c In Worksheets("C").Range("B234", "M269")
If c <> "" Then
GA1.Range("B4").offset(0,n) = c
n = n + 1
End If
Next

En colonne ???
n = 4
For Each c In Worksheets("C").Range("B14", "M49")
If c <> "" Then
GA1.Range("B" & n) = c
n = n + 1
End If
Next
For Each c In Worksheets("C").Range("B234", "M269")
If c <> "" Then
GA1.Range("B" & n) = c
n = n + 1
End If
Next

à partir de B4 de la feuille "GA1"

Espérant avoir répondu à ton attente



Bonjour,
je voudrais pouvoir coller sur la feuille "GA1" à partir de la cellule "B4",
les celulles non vides qui se trouvent sur la page "C" sur la plage B14:M49.
Et après, même opération à la suite de ma feuille "GA1", pour les cellules
de la page "C" plage B234:M269.

Je vous remecie.
Yann


Sunburn
Le #4565211
Hello
en fait, je voudrais coller la ligne entière dont l'une de ses cellules
serait non vide, au sein de ma zone identifiée SYNTH1.

Voilà, si je suis plus compréhensible.
Merci.
Yann


Salut à toi
Comment recopie t'on chaque cellule non vide :

En ligne ???
n = 0
For Each c In Worksheets("C").Range("B14", "M49")
If c <> "" Then
GA1.Range("B4").offset(0,n) = c
n = n + 1
End If
Next
For Each c In Worksheets("C").Range("B234", "M269")
If c <> "" Then
GA1.Range("B4").offset(0,n) = c
n = n + 1
End If
Next

En colonne ???
n = 4
For Each c In Worksheets("C").Range("B14", "M49")
If c <> "" Then
GA1.Range("B" & n) = c
n = n + 1
End If
Next
For Each c In Worksheets("C").Range("B234", "M269")
If c <> "" Then
GA1.Range("B" & n) = c
n = n + 1
End If
Next

à partir de B4 de la feuille "GA1"

Espérant avoir répondu à ton attente



Bonjour,
je voudrais pouvoir coller sur la feuille "GA1" à partir de la cellule "B4",
les celulles non vides qui se trouvent sur la page "C" sur la plage B14:M49.
Et après, même opération à la suite de ma feuille "GA1", pour les cellules
de la page "C" plage B234:M269.

Je vous remecie.
Yann




FFO
Le #4565121
Rebonjours à toi
Ce n'est pas ce que j'avais compris dans ton premier message
Tu semblais vouloir mettre dans une feuille les cellules non vides d'une plage
Si je comprends tu souhaites plutôt ramener les lignes non vide de cette
plage dans cette feuille à partir de la cellule B4
Je te propose d'abord de ramener toutes les lignes
Puis de réaliser un tri pour mettre les lignes vides à la fin
et de coller la suite à partir de ces lignes vides avec le même déroulement

Le code :

GA1.Range("B4", "M39").Value = C.Range("B14", "M49").Value
Sheets("GA1").Select
Range("B4", "M39").Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("B39").Select
Do While ActiveCell.End(xlToRight).Address = Range("IV" &
ActiveCell.Row).Address
ActiveCell.Offset(-1, 0).Select
Loop
Ligne = ActiveCell.Row
Do While ActiveCell.Value = ""
If ActiveCell.End(xlToRight).Address = Range("IV" & ActiveCell.Row).Address
Then
ActiveCell.EntireRow.Delete
Ligne = Ligne - 1
End If
ActiveCell.Offset(-1, 0).Select
Loop
GA1.Range("B" & Ligne, "M" & ActiveCell.Row + 35).Value = C.Range("B234",
"M269").Value
Sheets("GA1").Select
Range(ActiveCell, "M" & ActiveCell.Row + 35).Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Celà devrait faire
Dis moi !!!!!



Hello
en fait, je voudrais coller la ligne entière dont l'une de ses cellules
serait non vide, au sein de ma zone identifiée SYNTH1.

Voilà, si je suis plus compréhensible.
Merci.
Yann


Salut à toi
Comment recopie t'on chaque cellule non vide :

En ligne ???
n = 0
For Each c In Worksheets("C").Range("B14", "M49")
If c <> "" Then
GA1.Range("B4").offset(0,n) = c
n = n + 1
End If
Next
For Each c In Worksheets("C").Range("B234", "M269")
If c <> "" Then
GA1.Range("B4").offset(0,n) = c
n = n + 1
End If
Next

En colonne ???
n = 4
For Each c In Worksheets("C").Range("B14", "M49")
If c <> "" Then
GA1.Range("B" & n) = c
n = n + 1
End If
Next
For Each c In Worksheets("C").Range("B234", "M269")
If c <> "" Then
GA1.Range("B" & n) = c
n = n + 1
End If
Next

à partir de B4 de la feuille "GA1"

Espérant avoir répondu à ton attente



Bonjour,
je voudrais pouvoir coller sur la feuille "GA1" à partir de la cellule "B4",
les celulles non vides qui se trouvent sur la page "C" sur la plage B14:M49.
Et après, même opération à la suite de ma feuille "GA1", pour les cellules
de la page "C" plage B234:M269.

Je vous remecie.
Yann






FFO
Le #4564811
Bonsoir à toi
Aprés réflection le code proposé a quelques imperfections
Je te propose en lieu et place celui-ci qui devrait mieux convenir :

Sheets("GA1").Range("B4", "M39").Value = Sheets("C").Range("B14", "M49").Value
Sheets("GA1").Select
Range("B4", "M39").Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("B39").Select
Do While ActiveCell.End(xlToRight).Address = Range("IV" &
ActiveCell.Row).Address
ActiveCell.Offset(-1, 0).Select
Loop
Ligne = ActiveCell.Offset(1, 0).Row
Do While ActiveCell.Value = ""
If ActiveCell.End(xlToRight).Address = Range("IV" & ActiveCell.Row).Address
Then
ActiveCell.EntireRow.Delete
Ligne = Ligne - 1
End If
ActiveCell.Offset(-1, 0).Select
Loop
Sheets("GA1").Range("B" & Ligne, "M" & ActiveCell.Row + 35).Value =
Sheets("C").Range("B234", "M269").Value
Sheets("GA1").Select
Range(ActiveCell, "M" & ActiveCell.Row + 35).Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Dis moi !!!


Hello
en fait, je voudrais coller la ligne entière dont l'une de ses cellules
serait non vide, au sein de ma zone identifiée SYNTH1.

Voilà, si je suis plus compréhensible.
Merci.
Yann


Salut à toi
Comment recopie t'on chaque cellule non vide :

En ligne ???
n = 0
For Each c In Worksheets("C").Range("B14", "M49")
If c <> "" Then
GA1.Range("B4").offset(0,n) = c
n = n + 1
End If
Next
For Each c In Worksheets("C").Range("B234", "M269")
If c <> "" Then
GA1.Range("B4").offset(0,n) = c
n = n + 1
End If
Next

En colonne ???
n = 4
For Each c In Worksheets("C").Range("B14", "M49")
If c <> "" Then
GA1.Range("B" & n) = c
n = n + 1
End If
Next
For Each c In Worksheets("C").Range("B234", "M269")
If c <> "" Then
GA1.Range("B" & n) = c
n = n + 1
End If
Next

à partir de B4 de la feuille "GA1"

Espérant avoir répondu à ton attente



Bonjour,
je voudrais pouvoir coller sur la feuille "GA1" à partir de la cellule "B4",
les celulles non vides qui se trouvent sur la page "C" sur la plage B14:M49.
Et après, même opération à la suite de ma feuille "GA1", pour les cellules
de la page "C" plage B234:M269.

Je vous remecie.
Yann






Sunburn
Le #4943031
Salut
Merci pour le code, mais il plante après le "End If"
ActiveCell.Offset(-1, 0).Select

mais je ne vois pas pourquoi.
D'autre part, peut-on mettre le nom d'une plage (Par exemple, les plages
nommées SYNTH1, SYNTH2, etc... (j'en ai 9 en tout)

merci


Bonsoir à toi
Aprés réflection le code proposé a quelques imperfections
Je te propose en lieu et place celui-ci qui devrait mieux convenir :

Sheets("GA1").Range("B4", "M39").Value = Sheets("C").Range("B14", "M49").Value
Sheets("GA1").Select
Range("B4", "M39").Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("B39").Select
Do While ActiveCell.End(xlToRight).Address = Range("IV" &
ActiveCell.Row).Address
ActiveCell.Offset(-1, 0).Select
Loop
Ligne = ActiveCell.Offset(1, 0).Row
Do While ActiveCell.Value = ""
If ActiveCell.End(xlToRight).Address = Range("IV" & ActiveCell.Row).Address
Then
ActiveCell.EntireRow.Delete
Ligne = Ligne - 1
End If
ActiveCell.Offset(-1, 0).Select
Loop
Sheets("GA1").Range("B" & Ligne, "M" & ActiveCell.Row + 35).Value =
Sheets("C").Range("B234", "M269").Value
Sheets("GA1").Select
Range(ActiveCell, "M" & ActiveCell.Row + 35).Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Dis moi !!!


Hello
en fait, je voudrais coller la ligne entière dont l'une de ses cellules
serait non vide, au sein de ma zone identifiée SYNTH1.

Voilà, si je suis plus compréhensible.
Merci.
Yann


Salut à toi
Comment recopie t'on chaque cellule non vide :

En ligne ???
n = 0
For Each c In Worksheets("C").Range("B14", "M49")
If c <> "" Then
GA1.Range("B4").offset(0,n) = c
n = n + 1
End If
Next
For Each c In Worksheets("C").Range("B234", "M269")
If c <> "" Then
GA1.Range("B4").offset(0,n) = c
n = n + 1
End If
Next

En colonne ???
n = 4
For Each c In Worksheets("C").Range("B14", "M49")
If c <> "" Then
GA1.Range("B" & n) = c
n = n + 1
End If
Next
For Each c In Worksheets("C").Range("B234", "M269")
If c <> "" Then
GA1.Range("B" & n) = c
n = n + 1
End If
Next

à partir de B4 de la feuille "GA1"

Espérant avoir répondu à ton attente



Bonjour,
je voudrais pouvoir coller sur la feuille "GA1" à partir de la cellule "B4",
les celulles non vides qui se trouvent sur la page "C" sur la plage B14:M49.
Et après, même opération à la suite de ma feuille "GA1", pour les cellules
de la page "C" plage B234:M269.

Je vous remecie.
Yann








FFO
Le #4942771
Rebonjour à toi
Si mon code Bug c'est que tu as du l'essayer à vide sans donnée
Ce qu'il fait qu'il se retrouve dans une situation anormale où la cellule
active est positionné sur une cellule où elle n'aurait jamais du être si les
données étaient présentes en l'occurence la cellule B1 et le code cherche à
la déplacer vers le haut :

ActiveCell.Offset(-1, 0).Select

Pour palier malgrés tout à cette situation je l'ai corrigé comme suit :

Plage1 = Sheets("C").Range("B14", "M49").Value
Plage2 = Sheets("C").Range("B234", "M269").Value

Sheets("GA1").Range("B4", "M39").Value = Plage1
Sheets("GA1").Select
Range("B4", "M39").Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("B39").Select
Do While ActiveCell.End(xlToRight).Address = Range("IV" &
ActiveCell.Row).Address And ActiveCell.Address > Range("B1").Address
ActiveCell.Offset(-1, 0).Select
Loop
Ligne = ActiveCell.Offset(1, 0).Row
Do While ActiveCell.Value = "" And ActiveCell.Address > Range("B3").Address
If ActiveCell.End(xlToRight).Address = Range("IV" & ActiveCell.Row).Address
Then
ActiveCell.EntireRow.Delete
Ligne = Ligne - 1
End If
ActiveCell.Offset(-1, 0).Select
Loop
Sheets("GA1").Range("B" & Ligne, "M" & ActiveCell.Row + 35).Value = Plage2
Sheets("GA1").Select
Range(ActiveCell, "M" & ActiveCell.Row + 35).Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("B" & ActiveCell.Row + 35).Select
Do While ActiveCell.End(xlToRight).Address = Range("IV" &
ActiveCell.Row).Address And ActiveCell.Address > Range("B3").Address
ActiveCell.Offset(-1, 0).Select
Loop
Ligne = ActiveCell.Offset(1, 0).Row
Do While ActiveCell.Value = "" And ActiveCell.Address > Range("B" & Ligne -
1).Address
If ActiveCell.End(xlToRight).Address = Range("IV" & ActiveCell.Row).Address
Then
ActiveCell.EntireRow.Delete
Ligne = Ligne - 1
End If
ActiveCell.Offset(-1, 0).Select
Loop

Tu peux définir tes plages avec les lignes :

Plage1 = Sheets("C").Range("B14", "M49").Value
Plage2 = Sheets("C").Range("B234", "M269").Value


Ne changes pas le nom mais actualises les cellules à prendre en compte :

Range("B14", "M49")
Range("B234", "M269")

Si une plage n'est pas utilisée mets une cote devant la ligne correspondante
comme ceci pour la Plage2 :

Plage1 = Sheets("C").Range("B14", "M49").Value
'Plage2 = Sheets("C").Range("B234", "M269").Value


J'espère ainsi que celà te conviendra
Dis moi !!!




Salut
Merci pour le code, mais il plante après le "End If"
ActiveCell.Offset(-1, 0).Select

mais je ne vois pas pourquoi.
D'autre part, peut-on mettre le nom d'une plage (Par exemple, les plages
nommées SYNTH1, SYNTH2, etc... (j'en ai 9 en tout)

merci


Bonsoir à toi
Aprés réflection le code proposé a quelques imperfections
Je te propose en lieu et place celui-ci qui devrait mieux convenir :

Sheets("GA1").Range("B4", "M39").Value = Sheets("C").Range("B14", "M49").Value
Sheets("GA1").Select
Range("B4", "M39").Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("B39").Select
Do While ActiveCell.End(xlToRight).Address = Range("IV" &
ActiveCell.Row).Address
ActiveCell.Offset(-1, 0).Select
Loop
Ligne = ActiveCell.Offset(1, 0).Row
Do While ActiveCell.Value = ""
If ActiveCell.End(xlToRight).Address = Range("IV" & ActiveCell.Row).Address
Then
ActiveCell.EntireRow.Delete
Ligne = Ligne - 1
End If
ActiveCell.Offset(-1, 0).Select
Loop
Sheets("GA1").Range("B" & Ligne, "M" & ActiveCell.Row + 35).Value =
Sheets("C").Range("B234", "M269").Value
Sheets("GA1").Select
Range(ActiveCell, "M" & ActiveCell.Row + 35).Select
Selection.Sort Key1:=Range("B4"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Dis moi !!!


Hello
en fait, je voudrais coller la ligne entière dont l'une de ses cellules
serait non vide, au sein de ma zone identifiée SYNTH1.

Voilà, si je suis plus compréhensible.
Merci.
Yann


Salut à toi
Comment recopie t'on chaque cellule non vide :

En ligne ???
n = 0
For Each c In Worksheets("C").Range("B14", "M49")
If c <> "" Then
GA1.Range("B4").offset(0,n) = c
n = n + 1
End If
Next
For Each c In Worksheets("C").Range("B234", "M269")
If c <> "" Then
GA1.Range("B4").offset(0,n) = c
n = n + 1
End If
Next

En colonne ???
n = 4
For Each c In Worksheets("C").Range("B14", "M49")
If c <> "" Then
GA1.Range("B" & n) = c
n = n + 1
End If
Next
For Each c In Worksheets("C").Range("B234", "M269")
If c <> "" Then
GA1.Range("B" & n) = c
n = n + 1
End If
Next

à partir de B4 de la feuille "GA1"

Espérant avoir répondu à ton attente



Bonjour,
je voudrais pouvoir coller sur la feuille "GA1" à partir de la cellule "B4",
les celulles non vides qui se trouvent sur la page "C" sur la plage B14:M49.
Et après, même opération à la suite de ma feuille "GA1", pour les cellules
de la page "C" plage B234:M269.

Je vous remecie.
Yann










Publicité
Poster une réponse
Anonyme