Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

modification macro

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

guigui76

XLDnaute Occasionnel
Bonjour, je souhaite modifier cette macro
HTML:
http://www.excel-downloads.com/forum/91261-vba-excel-copier-une-colonne-en-fonction-dune-cellule.html
pourque je puisse faire une selection d'une plage de cellule au lieu de la colonne entiere.

je fais une translation par la suite.

Code:
sub cinq()
Dim celle As Range

For Each celle In Range("e4:ai4")
If celle.Value = 5 And celle.Value <> "" Then
[COLOR="Red"]celle.EntireColumn.Copy [/COLOR]'ici tu écris la cellule de destination
celle.select
End If
Next
End Sub

Je vous remercie
 
Re : modification macro

Bonjour à tous


Personnellement j'écrirai ceci
Code:
Sub Macro6bis()
Dim Source As Range, Desti As Range
Dim i As String
Dim x As Range
' Macro enregistrée le 27/01/2010 par Moi
i = Range("f19").Value
d = Range("i19").Value

comme cela
Code:
Sub Macro6bis()
Dim Source As Range, Desti As Range
Dim i As [COLOR=Red]String[/COLOR]
Dim d As [COLOR=Red]String[/COLOR]
Dim x As Range
' Macro enregistrée le 27/01/2010 par Moi
i = Range("f19").[COLOR=Red]Text[/COLOR]
d = Range("i19").[COLOR=Red]Text[/COLOR]
 
Re : modification macro

Bonjour guigui

pour les selectionner, pas de problème :

Code:
Range("C2,C241:C500").Select

bon dimanche
@+

Mais je parlai avec le resultat de la recherche "x"
j'ai trouvé une solution:
je copie d'ensemble de la colonne de la ligne 2>500, vers le fichier destination
et ensuite je divise en plusieur entitée.
la premiere partie sur la premiere feuille et la deuxieme parti sur le deuxieme feuille.
Mais cela doit vous faire bondir comme solution.
 
Re : modification macro


je n'avais pas vu mon erreur😀.
je te remercie.
 
Re : modification macro

Re

euh, vois pas trop ce que tu veux faire, pour info "x" étant une variable de type "range", tu peux essayer d'utiliser les propriété "row" ou "Column" pour déterminer une autre plage :

Code:
Range("C" & x.Row).Select

@+
 
Re : modification macro

en faite, je desire copie les lignes 2>250 et les translaté vers un autre fichier dans la 1ere feuille , et copié la ligne 2 & 251>500 vers la deuxieme feuille du fichier destination.
la colonn etant trouvé par la recherche.
 
Re : modification macro

Je te remercie Pierrot93 le code fonctionne bien mais il va falloir indiquer aussi dans la parti "coller" les numeros de lignes de destination.
Code:
If Not x Is Nothing Then
Union(Cells(2, x.Column), Cells(12, x.Column).Resize(26, 1)).Select
    
    Destination.Sheets("feuil1").Range("c65536").End(xlUp)(2).PasteSpecial xlPasteAll, xlNone, , True
End If
si cela te semble impossible, je ferai ma solution evoqué précedement
 
Re : modification macro

Bonjour Guigui

oui... mais les coller où ? à partir de quels critères ? sinon ceci devrait fonctionner :

Code:
If Not x Is Nothing Then
    Union(Cells(2, x.Column), Cells(12, x.Column).Resize(26, 1)).Copy
    Destination.Sheets("feuil1").Range("c65536").End(xlUp)(2).PasteSpecial xlPasteAll, xlNone, , True
End If

bonne journée
@+
 
Re : modification macro

Voila, je pense avoir fini:
Pour rappel :

_ le fichier general.xls indique, la date la source et la destination.

Je remercie toutes les personnes qui ont pu m'aider.

Code:
Sub Macro1()


Dim Source As Range, Desti As Range
Dim i As String
Dim d As String
Dim x As Range


' Macro enregistrée le 27/01/2010 par Moi


i = Range("f3").Value ' recherche du lieu et du nom du fichier source
d = Range("h3").Value ' recherche du lieu et du nom du fichier destination


Set Destination = Application.Workbooks.Open(d, , False)   ' ouverture du fichier destination
Set classeurSource = Application.Workbooks.Open(i, , True) ' ouverture du fichier source

'recherche de la valeur dans le fichier source
With classeurSource.Sheets("feuil1")
Set x = .Range("E2:AN2").Find(Workbooks("bilan general.xls").Sheets("feuil1").Range("B5").Value _
    , , xlValues, xlWhole, , , False)
End With

If Not x Is Nothing Then
'copie de le recherche vers la 1ere feuille ;la ligne 2 et de la ligne 3:255
    Union(Cells(2, x.Column), Cells(3, x.Column).Resize(252, 1)).Copy
    Destination.Sheets("feuil1").Range("c65536").End(xlUp)(2).PasteSpecial xlPasteAll, xlNone, , True
    
  'copie de la recherche vers la 2eme feuille ;la ligne 2 et de la ligne 256:511
Union(Cells(2, x.Column), Cells(255, x.Column).Resize(252, 1)).Copy
    Destination.Sheets("feuil2").Range("c65536").End(xlUp)(2).PasteSpecial xlPasteAll, xlNone, , True
End If

Application.DisplayAlerts = False
classeurSource.Close False ' fermeture du classeur source

Destination.Save 'sauvegarde du fichier destination
Destination.Close False 'fermeture du fichier destination
Application.DisplayAlerts = True ' arret des ala



End Sub
 
Re : modification macro

Je reviens encore à la charge, mais je voudrai savoir:

si il y a possibilité d'avoir le fichier destination en lecture seule en temps normale et de retiré la protection lors de l'activation de la macro.

Code:
Set Destination = Application.Workbooks.Open(d, , , WriteResPassword:="1111",false)

erreur de compilation
attendu: parametre nommé
 
Re : modification macro

Bonjour Guigui

essaye le code ci-dessous, chemin et nom fichier à adapter :

Code:
Dim destination As Workbook
Set destination = Workbooks.Open("C:\MesDocs\Excel\Test\classeur1.xls", , , , , "1111", True)

bon après midi
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
178
Réponses
9
Affichages
508
Réponses
8
Affichages
782
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…