Excel et copy de selection ev vb

Signaler
Messages postés
12
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
17 mai 2011
-
Messages postés
12
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
17 mai 2011
-
Bonjour je cherche un copier des cellules d'un fichier excel.
Il faut que je copie les lignes 1,2 et 3
puis si a parti de la ligne 4 si dans la colonne A la cellule est egale a 1 alors copier les 4 cellules qui sont a coté. pareils pour la colonne G.
Pour que tout ces cellules soit dans le presse papier et que je copie dans un fichier texte par exemple.

Voila le code que j'ai commander mais il ne fonctionne pas.

Merci pour votre aide


Private Sub CommandButton1_Click()

Dim Cell As Range
Dim Plag As Range
Dim Zone As Range
Dim Zone2 As Range
Dim Tout As Range

Application.Volatile True

Plag = Range("a:a")
Zone = Range("1:3")
Zone2 = 0

For Each Cell In Plag
If Cell.Value = 1 Then
Zone2 = Zone2 + Range(ActivCell, ActivCell.Offset(0, 4))
End If
Next
Tout = Zone + Zone2
Tout.Copy

End Sub

9 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour,
Houla ! ce sont carrément les bases, qui te font défaut. ===>>
- un range se définit par l'utilisation d'un Set
- tu as typé zone2 en Range. Comment peux-tu alors écrire zone2 = 0 ? que veux-tu exprimer par là ?
- ajouter un range à une plage nécessite l'utilisation de la méthode Union (et non un +)
- la méthode copy nécessite une syntaxe que tu n'appliques pas.
Tu ne peux développer valablement "d'instinct".
Commence s'il te plait par ouvrir ton aide en ligne sur les mots mis en rouge ci-dessus. Tu y trouveras même des exemples.
A bientôt si, après cette lecture de ton aide VBA, tu rencontres encore vraiment un problème.


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
12
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
17 mai 2011

Merci pour ton aide j'ai fait quelque modif mais il me parle d'une erreur 424.
De plus j'aimerais reinitialiser mes range zone 2 et tout mais je n'ai pas trouver la methode.
Pour la fonction copy je veux que la selection se retrouve dans le presse papier.


Private Sub CommandButton1_Click()

Dim Cell As Range
Dim Plag As Range
Dim Zone As Range
Dim Zone2 As Range
Dim Tout As Range
Dim lign As Range

Application.Volatile True

Set Zone = Range("1:3")

For Each Cell In Range("a:a")
If Cell.Value = 1 Then
Set lign = Range(ActivCell, ActivCell.Offset(0, 4))
Set Zone2 = Union(Range(Zone2), Range(Lign))
End If
Next
Set Tout = Union(Range(Zone), Range(Zone2))

Tout.Copy
End Sub
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
- Un range est un objet. il se remet à rien en lui affectant la valeur Nothing (comme pour tout objet)
- je ne comprends pas ce que tu veux dire par ActiveCell, puisque tu n'en changes nulle-part
- Zone, Zone2 et lign sont déjà des Ranges, et s'utilisent donc directement dans la mpéthode Union
- la méthode Union ne peut "unir" que des plages existantes (il faut donc une expression conditionnelle)

regarde ce que ferait ceci (exemple, car j'ignore ce que tu cherches à faire exactement) :
Dim Cell As Range
Dim Plag As Range
Dim Zone As Range
Dim Zone2 As Range
Dim Tout As Range
Dim lign As Range

'Application.Volatile True

Set Zone = Range("A1:A3")
Set Zone2 = Nothing
Set Tout = Nothing

For Each Cell In Range("a1:a100")
If Cell.Value = 1 Then
  Set lign = Range(Cell, Cell.Offset(0, 4))
  If Not Zone2 Is Nothing Then
    Set Zone2 = Union(Zone2, lign)
  Else
    Set Zone2 = lign
  End If
End If
Next
If Not Zone2 Is Nothing Then
 Set Tout = Union(Zone, Zone2)
 
End If

- La méthode Copy ne saurait s'appliquer à une plage (ton tout) éventuellement discontinue
J'ignore par ailleurs pourquoi tu souhaites la "mettre dans le presse-papier" mais, bien que dans cette ignorance, je subodorre (je parierais à 100 contre 1) que tu a surement mieux à faire. Expose cette raison et on verra
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Ah, maintenant :
J'ignore pourquoi tu définit d'abord zone2, puis le range tout.
Ce tremplin n'est utile que si tu dois par ailleurs, dans ton appli, utiliser zone2 tout seul ! (mais il s'agit là de bon sens uniquement)

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
12
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
17 mai 2011

En fait j'ai besoin de la mettre dans le presse papier pour pouvoir la coller dans un autre document autre qu'excel.

du coup si j'ai bien compris la solution serait de copier les zone dans une autre feuille pour avoir une seule sélection et de la mettre dans le presse papier après.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Si c'est pour un collage dans un document "autre qu'Excel", je vois mal ce que tu pourrais mettre dans le presse-papier (sous quel format ?).
Quel est ce document "autre qu'Excel" ?


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
12
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
17 mai 2011

c'est pour mettre dans un mail je n'ai besoin que d'une sorte d'imprim écran du fichier mais que sur certaines données.

si ce n'est pas possible je trouverai un autre solution.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
alimente alors un fichier texte ou mieux : csv et joins-le à ton mail.
Si toutefois, ton correspondant possède également Excel, il sera simple de lui envoyer une feuille Excel ne comportant que ces lignes !


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Messages postés
12
Date d'inscription
jeudi 24 novembre 2005
Statut
Membre
Dernière intervention
17 mai 2011

ok je vais voir je te remerci en tout cas pour ton aide