Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/11/2011, 00h20   #1
Candidat au titre de Membre du Club
 
Claude
Inscription : janvier 2011
Messages : 67
Détails du profil
Informations personnelles :
Nom : Claude
Localisation : Canada

Informations forums :
Inscription : janvier 2011
Messages : 67
Points : 11
Points : 11
Par défaut Effacement de données

Bonjour à tous du forum,

J'ai un classeur qui contient 10 feuilles de calcul. Dans la première feuille, j'ai un bouton qui me permet d'effacer les données saisies dans des cellules spécifiques. La plage de cellules s'appelle MAPLAGE. J'ai ajouté une feuille qui contient des données dans 7 cellules qui doivent elles aussi être effacées en même temps que la première feuille. J'ai tenté d'ajouter ces cellules à MAPLAGE. Lorsque je clique sur le bouton, les données dans les cellules de la dernière feuille ne s'effacent pas. J'ai bien ajouté le nom de la feuille et l'emplacement des cellules à MAPLAGE. Ai-je manqué quelque chose ou si je dois procéder différemment?

Merci de votre aide,

Claude
Klode784 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 03h46   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 623
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 623
Points : 30 954
Points : 30 954
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Si tu mettais le code que tu as utilisé, cela aiderait les membres du forum.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/11/2011, 15h31   #3
Candidat au titre de Membre du Club
 
Claude
Inscription : janvier 2011
Messages : 67
Détails du profil
Informations personnelles :
Nom : Claude
Localisation : Canada

Informations forums :
Inscription : janvier 2011
Messages : 67
Points : 11
Points : 11
Bonjour et merci pour la réponse. J'ai revérifié le tout et lorsque j'essaie d'ajouter des cellules supplémentaires à MAPLAGE, elles ne s'ajoutent pas. De plus, dans le code ci-dessous je crois que je devrais ajouter la feuille supplémentaire afin que la commande prenne en compte la deuxième feuille pour en effacer les cellules. Mais premièrement, comment faire pour ajouter les cellules à MAPLAGE? J'ai tenté de différentes façons et je ne semble pas avoir de succès.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub RAZ()
Dim c As Range
Application.EnableEvents = True
 
Application.ScreenUpdating = False
With Sheets("Contrat")
    For Each c In .Range("MAPLAGE")
        If Not c.HasFormula Then c.MergeArea.ClearContents
    Next c
    .Range("D30").Value = 0
    .Range("E8").Select
End With
End Sub
Merci de me corriger si je suis dans l'erreur...

Claude
Klode784 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 18h13   #4
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour,

Plutôt que d'essayer de modifier la plage, tu peux effectuer l'opération en 2 parties.
Exemple avec un effacement de la plage A1:A4 de la feuille "Contrat" et effacement de la plage C1:C4 de la feuille "Autre feuille".

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Option Explicit
Private Sub RAZ()
Dim MaPlage1 As Range
Dim MaPlage2 As Range
Dim c As Range
Dim ws1 As Worksheet
Dim ws2 As Worksheet
 
    Set ws1 = ThisWorkbook.Worksheets("Contrat")
    Set ws2 = ThisWorkbook.Worksheets("Autre feuille")'A adapter
    Set MaPlage1 = ws1.Range("A1:A4") 'Plage de la feuille "Contrat"
    Set MaPlage2 = ws2.Range("C1:C4") 'Plage de la feuille "Autre feuille"
 
    For Each c In MaPlage1
        If Not c.HasFormula Then c.MergeArea.ClearContents
    Next c
    For Each c In MaPlage2
        If Not c.HasFormula Then c.MergeArea.ClearContents
    Next c
 
End Sub
Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 19h29   #5
Candidat au titre de Membre du Club
 
Claude
Inscription : janvier 2011
Messages : 67
Détails du profil
Informations personnelles :
Nom : Claude
Localisation : Canada

Informations forums :
Inscription : janvier 2011
Messages : 67
Points : 11
Points : 11
Merci pour ta réponse et ça semble bien être ce que je veux à l'exception de "A1:A4". J'ai adapté le code comme suggéré et tout fonctionne parfaitement. J'ajoute le code modifié.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub RAZ()
Dim MAPLAGE As Range
Dim MAPLAGE1 As Range
Dim c As Range
Dim ws1 As Worksheet
Dim ws2 As Worksheet
 
    Set ws1 = ThisWorkbook.Worksheets("Contrat")
    Set ws2 = ThisWorkbook.Worksheets("Fournisseur")'A adapter
    Set MAPLAGE = ws1.Range("MAPLAGE") 'Plage de la feuille "Contrat"
    Set MAPLAGE1 = ws2.Range("MAPLAGE1") 'Plage de la feuille "Autre feuille"
 
    For Each c In MAPLAGE
        If Not c.HasFormula Then c.MergeArea.ClearContents
    Next c
    For Each c In MAPLAGE1
        If Not c.HasFormula Then c.MergeArea.ClearContents
    Next c
 
End Sub
Aussi, si tu pourrais m'expliquer ce que c dans "For Each c in..." représente, ça pourrait m'aider à comprendre un peu. Je sais ce que je veux, mais j'ai quelques fois de la difficulté avec les formules...

Claude
Klode784 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2011, 21h15   #6
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Re,

Citation:
ça semble bien être ce que je veux à l'exception de "A1:A4". MaPlage contient des cellules spécifiques, ex.: B8, B10:B16, B18, B19, A22, A24, A27, etc. Pour l'autre feuille, aucun problème j'ai seulement des cellules comprises entre B10:B16.
Tu peux définir distinctement MaPlage1 et MaPlage2.
Code :
1
2
3
4
5
With ws1
Set MaPlage1 = Application.Union(.Range("B8"), .Range("B10:B16"), .Range("B18:B19"), .Range("A22"), .Range("A24"), .Range("A27"))
End with
 
Set MaPlage2 = ws2.Range("B10:B16")
Citation:
Si tu pourrais m'expliquer ce que c dans "For Each c in..." représente, ça pourrait m'aider à comprendre un peu.
Code :
1
2
3
For Each c In MaPlage1
        If Not c.HasFormula Then c.MergeArea.ClearContents
Next c
Je traduis ce que je crois comprendre : pour chaque cellule de la plage considérée, si la cellule ne contient pas une formule alors on efface la cellule (fusionnée ou non).

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2011, 05h08   #7
Candidat au titre de Membre du Club
 
Claude
Inscription : janvier 2011
Messages : 67
Détails du profil
Informations personnelles :
Nom : Claude
Localisation : Canada

Informations forums :
Inscription : janvier 2011
Messages : 67
Points : 11
Points : 11
Je te remercie pour ton explication. Je comprends mieux maintenant. Je vois également qu'il y a plusieurs façons de procéder pour arriver au même résultat, certains étant plus élaborés que les autres.

Claude
Klode784 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h09.


 
 
 
 
Partenaires

Hébergement Web