Excel Copie- coller avec si cellule pleine
AB
-
AB -
AB -
Bonsoir,
J’aimerais savoir si vous pouvez m’aider pour une macro ;
J’ai un classeur avec des données de certaines cellules que je vais reporter dans un autre classeur.
Dans le classeur source, les données qui sont à copier sont toujours au même endroit ex, en h 8, M12,d 10.
Ex, je dois copier la cellule h8 – m12- d10 dans le classeur receveur à l’emplacement B5, b8, et b25 si elle vide, si elle pleine , alors décaler à droite en c5 c8 c9 et la fois d’après en d5,d8 d9.
C’est un classeur de résultat qui part de janvier à décembre, on va dire qu’il y a 12 colonnes réceptrices.
On va dire que les deux fichiers sont ouverts.
Par contre le fichier donneur est un tableau qui se met à jour chaque mois.
- --
J’aimerai aussi avoir la syntaxe (pour plus tard) pour décaler non plus à droite mais en dessous : B5 , puis b6 et b7 ect si la cellule est pleine.
J’étais un peu long, j’ai voulu être claire.
Cordialement.
Merci par anticipation.
J’aimerais savoir si vous pouvez m’aider pour une macro ;
J’ai un classeur avec des données de certaines cellules que je vais reporter dans un autre classeur.
Dans le classeur source, les données qui sont à copier sont toujours au même endroit ex, en h 8, M12,d 10.
Ex, je dois copier la cellule h8 – m12- d10 dans le classeur receveur à l’emplacement B5, b8, et b25 si elle vide, si elle pleine , alors décaler à droite en c5 c8 c9 et la fois d’après en d5,d8 d9.
C’est un classeur de résultat qui part de janvier à décembre, on va dire qu’il y a 12 colonnes réceptrices.
On va dire que les deux fichiers sont ouverts.
Par contre le fichier donneur est un tableau qui se met à jour chaque mois.
- --
J’aimerai aussi avoir la syntaxe (pour plus tard) pour décaler non plus à droite mais en dessous : B5 , puis b6 et b7 ect si la cellule est pleine.
J’étais un peu long, j’ai voulu être claire.
Cordialement.
Merci par anticipation.
A voir également:
- Excel Copie- coller avec si cellule pleine
- Boite gmail pleine - Guide
- Excel cellule couleur si condition texte - Guide
- Si ou excel - Guide
- Liste déroulante excel - Guide
- Proteger cellule excel - Guide
2 réponses
Bonjour, grosso modo, tu dois créér une macro dans ton classeur cible. Au niveau des instructions que tu auras besoin, il y a :
' Pour activer le bon classeur et la bonne page (là où se trouvent tes données source par exemple)
Workbooks("nomdufichiersource.xls").activate
Sheets("nomdelafeuillesource").Select
' Pour récupérer le texte d'une cellule tu dois utiliser l'instruction :
Dim Lecontenuatester As String
Lecontenuatester = Cells(ligne, colonne).Value
' Note : la cellule A1 est à l'indice 1,1
' Pour copier du texte dans une cellule, l'affectation est dans l'autre sens tout simplement :
Cells(ligne, colonne).Value = Lecontenuacopier
' Dernier élement que tu as besoin : tester si une valeur est vide ou non :
' <> signifie différent de et "" est une valeur vide
' = signifie égal à
If Lecontenuatester <> "" Then
Else
End If
'Tu aura probablement besoin de boucles ou de répéter les bouts de code précédents pour copier tout ce que tu veux :
' Par exemple, tu peux imbriquer les bouts de code précédents dans une boucle comme ci dessous pour éviter de répéter la manip n fois
For i = 1 To 10
' Pour récupérer le contenu d'une cellule source
Workbooks("nomdufichiersource.xls").activate
Sheets("nomdelafeuillesource").Select
Dim Lecontenuatester As String
Lecontenuatester = Cells(2 * i + 3, 2).Value ' en admettant que 2 * i + 3, 2 te donnes la position qui t'intéresses
' Active la feuille cible de la copie
Workbooks("nomdufichiercible.xls").activate
Sheets("nomdelafeuillecible").Select
' Teste la valeur du texte de la cellule source
If Lecontenuatester <> "" Then
' Si elle n'est pas vide, on copie aux indices 2 * i + 3, 2
Cells(2 * i + 3, 2).Value = Lecontenuacopier
Else
' Si elle est vide, on la recopie aux mêmes emplacement que sur la feuille source 2 * i + 3 , 3
Cells(2 * i + 3 , 3).Value = Lecontenuacopier
End If
Next i
Voilà, en adaptant un peu, tu arrivera à faire exactement ce que tu veux, je pense avoir listé toutes les instructions dont tu as besoin.
' Pour activer le bon classeur et la bonne page (là où se trouvent tes données source par exemple)
Workbooks("nomdufichiersource.xls").activate
Sheets("nomdelafeuillesource").Select
' Pour récupérer le texte d'une cellule tu dois utiliser l'instruction :
Dim Lecontenuatester As String
Lecontenuatester = Cells(ligne, colonne).Value
' Note : la cellule A1 est à l'indice 1,1
' Pour copier du texte dans une cellule, l'affectation est dans l'autre sens tout simplement :
Cells(ligne, colonne).Value = Lecontenuacopier
' Dernier élement que tu as besoin : tester si une valeur est vide ou non :
' <> signifie différent de et "" est une valeur vide
' = signifie égal à
If Lecontenuatester <> "" Then
Else
End If
'Tu aura probablement besoin de boucles ou de répéter les bouts de code précédents pour copier tout ce que tu veux :
' Par exemple, tu peux imbriquer les bouts de code précédents dans une boucle comme ci dessous pour éviter de répéter la manip n fois
For i = 1 To 10
' Pour récupérer le contenu d'une cellule source
Workbooks("nomdufichiersource.xls").activate
Sheets("nomdelafeuillesource").Select
Dim Lecontenuatester As String
Lecontenuatester = Cells(2 * i + 3, 2).Value ' en admettant que 2 * i + 3, 2 te donnes la position qui t'intéresses
' Active la feuille cible de la copie
Workbooks("nomdufichiercible.xls").activate
Sheets("nomdelafeuillecible").Select
' Teste la valeur du texte de la cellule source
If Lecontenuatester <> "" Then
' Si elle n'est pas vide, on copie aux indices 2 * i + 3, 2
Cells(2 * i + 3, 2).Value = Lecontenuacopier
Else
' Si elle est vide, on la recopie aux mêmes emplacement que sur la feuille source 2 * i + 3 , 3
Cells(2 * i + 3 , 3).Value = Lecontenuacopier
End If
Next i
Voilà, en adaptant un peu, tu arrivera à faire exactement ce que tu veux, je pense avoir listé toutes les instructions dont tu as besoin.
Je remercie TOTOTIIE pour sa réponse, mais j'ai dèjà une réponse similiaire par un autre site, les tiens développe beucoup PLUS les explicationS et je t'en remercie , celles ci me pemet de comprendre de mieux en mieux ce qui faut faire, et surtout les principaux arguments.
Merci encore bonne soirée et bon week end
aG
Merci encore bonne soirée et bon week end
aG