A voir également:
- Excel Copie- coller avec si cellule pleine
- Excel cellule couleur si condition texte - Guide
- Si et excel - Guide
- Aller à la ligne dans une cellule excel - Guide
- Liste déroulante excel - Guide
- Verrouiller 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