Adaptation d'un code

babelone

XLDnaute Occasionnel
Bonjour a tous,
Voici le code qui me supprime les col N,Q,S d'un fichier
cela marche trés bien.

Private Sub CommandButton1_Click()
Range("N:N,Q:Q,S:S").Delete
'Supprime la (ou les) colonne(s) de la zone sélectionnée
Selection.EntireColumn.Delete
End Sub

Comment pourrai je l'adapter si je met ce bouton dans 1 autre classeur et que dans le code,je lui indique le chemin du classeur concerné par cette suppression de colonnes .
classeur x avec bouton_click ---->va effacer col N,Q,S dans classeur Y

J'espere avoir ete precis

Merci a tous de votre aide.
 

babelone

XLDnaute Occasionnel
Re : Adaptation d'un code

Bonjour Job75,

Je ne comprend pas ce que vous voulez dire.

Oui le code fonctionne si il est sur la meme feuille que les colonnes a supprimer.
Ce que je souhaite,c'est utiliser un bouton avec ce code pour supprimer les 3 colonnes d'une autre feuille enregistrée dans un dossier de mon pc tjrs au meme endroit.

Si quelqu'un a une solution a me proposer.
En attendant ,je continue mes recherches sur le forum

Merci a tous.
 

mécano41

XLDnaute Accro
Re : Adaptation d'un code

Bonjour,

tu peux faire comme ceci :

Code:
Option Explicit

Private Sub CommandButton1_Click()
Dim Chemin  As String
Dim Classeur As Workbook
Dim NmClasseur  As String
NmClasseur = "Classeur2.xls"
Chemin = "C:\####################\" & NmClasseur
On Error Resume Next
Set Classeur = Workbooks(NmClasseur)
If Err <> 0 Then
    Set Classeur = Workbooks.Open(Chemin, , False)  ' Si classeur pas ouvert, on l'ouvre
End If
Classeur.Worksheets(1).Range("N:N,Q:Q,S:S").EntireColumn.Delete
Workbooks(NmClasseur).Close SaveChanges:=True   ' On ferme après enregistrement
End Sub

Cordialement
 

babelone

XLDnaute Occasionnel
Re : Adaptation d'un code

Merci a tous de votre réponse.
Pour mécano,
Ton code fonctionne bien ,sauf que si il est fermé rien ne ce passe.
par contre ouvert tout est OK.
Peut on a la suite de ton code,extraire les colonnes de A à P restante de ce classeur1,vers le classeur2 ou il y a ce bouton et qu'il y colle les données a la suite de celles deja existante.
Merci.
 

mécano41

XLDnaute Accro
Re : Adaptation d'un code

Peut on a la suite de ton code,extraire les colonnes de A à P restante de ce classeur1,vers le classeur2 ou il y a ce bouton et qu'il y colle les données a la suite de celles deja existante.
Merci.

Ce n'est pas très clair. Il faudrait que tu reprécises bien :

- si le bouton est bien dans le classeur (comme actuellement)
- si c'est bien du classeur 2 que l'on efface les colonnes N, Q et S (comme actuellement)
- si c'est bien dans le classeur 2 que tu veux copier les valeurs (jusqu'en fin de colonne) des colonnes de A à P
(sachant que ce qui était en P est maintenant en O puisque l'on a supprimé N et que si l'on prend également P on aura l'ancienne colonne R)
- s'il faut bien les coller à la suite des valeurs existantes dans le classeur 1
- si les valeurs existantes dans le classeur 1 sont de A à O ou de A à P

Cordialement
 

mécano41

XLDnaute Accro
Re : Adaptation d'un code

J'ai fait quand même une version avec ce que je suppose être ce que tu veux faire...

N'oublie pas de mettre le chemin.


NOTA : Si quelqu'un peut me dire pourquoi j'ai été obligé d'activer le Classeur2 (Classeur2.Activate avant le For-Next) pour que cela fonctionne, je suis preneur...

Cordialement
 

Pièces jointes

  • Classeurs1et2.zip
    17.7 KB · Affichages: 29

mécano41

XLDnaute Accro
Re : Adaptation d'un code

Bonsoir à tous,

Mecano, ton code fonctionne très bien chez moi (Excel 2003 FR) en désactivant l'instruction "Activate".

@+

Gael

Bonsoir,

Eh bien, je ne comprends pas ; je viens de réessayer suite à ton message et cela ne fonctionne pas :mad: J'ai d'ailleurs passé beaucoup de temps là dessus avant d'ajouter cette instruction! :D

Merci pour ta réponse

Cordialement
 

babelone

XLDnaute Occasionnel
Re : Adaptation d'un code

Bonsoir a tous et merci pour votre attention.
Désolé de la réponse tardive je viens de rentrer.
Mecano:

si le bouton est bien dans le classeur (comme actuellement)= OUI
- si c'est bien du classeur 2 que l'on efface les colonnes N, Q et S (comme actuellement)=OUI
- si c'est bien dans le classeur 2 que tu veux copier les valeurs (jusqu'en fin de colonne) des colonnes de A à P=OUI
(sachant que ce qui était en P est maintenant en O puisque l'on a supprimé N et que si l'on prend également P on aura l'ancienne colonne R)=OUI
- s'il faut bien les coller à la suite des valeurs existantes dans le classeur 1=OUI
- si les valeurs existantes dans le classeur 1 sont de A à O ou de A à P=CLASSEUR1 à des colonnes de A a P
tu as bien dechiffré mon message.
Dans ton fichier apres test,j'ai l'erreur suivante:erreur d'executione 9
l'indice n'appartient pas a la selection
sur cette ligne de code:Set Classeur2 = Workbooks(NmClasseur2)
Je te joint les 2 fichiers originaux
 

Pièces jointes

  • Classeur1.zip
    37.1 KB · Affichages: 25
  • Classeur1.zip
    37.1 KB · Affichages: 22
  • Classeur1.zip
    37.1 KB · Affichages: 25
  • Classeur2.zip
    16.2 KB · Affichages: 21
  • Classeur2.zip
    16.2 KB · Affichages: 22
  • Classeur2.zip
    16.2 KB · Affichages: 23

babelone

XLDnaute Occasionnel
Re : Adaptation d'un code

Bonjour a tous,bonjour mecano,
Aprés un test éffectué,sur mon PC boulot ce matin(Win2000+office2003 pro) cela fonctionne bien(effecement des colonnes+ copie des données du classeur2 vers classeurs1) par contre il faut que j'ouvre le classeur2 avant sinon il ne ce passe rien.
Par contre tu me parles de protection,il faudrait que le code s'execute qu'une seule fois,sachant que j'ai une MAJ tous les jour.

C'est genial merci beaucoup pour ton aide.
 

mécano41

XLDnaute Accro
Re : Adaptation d'un code

Bonjour,

...par contre il faut que j'ouvre le classeur2 avant sinon il ne ce passe rien.

Si tu as mis le bon chemin à la place des ######, je ne vois pas. J'ai refait des essais en copiant tes données dans mes fichiers : pas de problème ; ça va chercher le fichier, ça l'ouvre, ça fait les mises à jour...

Par contre tu me parles de protection,il faudrait que le code s'exécute qu'une seule fois,sachant que j'ai une MAJ tous les jour

Il faut que tu prévoies quelque part une cellule dans laquelle ton code viendra inscrire la date du jour (ex. : ....Range("AC1") = Date juste après le code de mise à jour.
Lors d'un clic ultérieur sur le bouton, ton code ira lire cette cellule et ne procédera à l'opération de mise à jour que si ce n'est pas la date du jour

(ex. : If ... Range("AC1")<>Date then ... on continue... à mettre avant la détection fichier Classeur2 ouvert ou non)

Cordialement
 

babelone

XLDnaute Occasionnel
Re : Adaptation d'un code

Ok pour la protection,je vais essayer.

Pour la suppression et copie sur autre classeur,je crois avoir trouvé,
dans le fichier que je recois chaque jour,il y a une macro,qui fait que cela ne fonction pas.
y a t'il un moyen,de supprimer cette macro,avant ouverture du classeur2 et ensuite il enchaine sur ton code ?

Ceci dit mille fois merci de ton aide.
j'aurai un défi pour toi qui sera dans un nouveau post ,peut etre aujourd'hui
plus complexe a mon avis !!!!
 

Discussions similaires

Réponses
8
Affichages
693

Statistiques des forums

Discussions
312 563
Messages
2 089 692
Membres
104 257
dernier inscrit
Stane78