PB VBA

Signaler
-
Messages postés
8439
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
26 février 2021
-
Bonjour,

Je ne m'y connais pas trop en VBA. Je vous remercie d'avance pour votre aide. Avec le code ci-dessous mon fichier ne fonctionne pas et la partie PasteSpecialxl Pastesvalues est surlignée en jaune.
a votre avis qu'est-ce qui peut bloqué? Je n'ai pas mis tous le code mais juste la première partie.

With ActiveSheet
Application.DisplayAlerts = False
.Range("A1").Select
.PasteSpecial xlPasteValues

Merci pour votre aide
Configuration: Windows / Internet Explorer 11.0

1 réponse

Messages postés
8439
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
26 février 2021
1 612
Bonjour,

Sans la totalité du code, on ne peut que répondre au hasard !!!!!

Par exemple : il manque le copy

La programmation exige beaucoup de rigueur, pour apprendre à coder correctement, voici quelques conseils qui t'éviterons bien des déboires :

1• commences tous les modules par Option Explicit, cela oblige à déclarer toutes les variables ;
2• déclares les variables avec le type ad hoc et fais attention à préciser le type après chaque nom de variable ;
3• limites leur portée au strict nécessaire (i.e. locale, privée, publique ou globale), afin qu'elles n'existent que là où elles sont utiles ;
4• envisages tous les types potentiels de chaque variable pour éviter les erreurs. En particulier lors des affectations, assures-toi que le récepteur est de même type que la source sinon utilises une fonction de conversion,
--- par exemple, au lieu de
Worksheets(1).Cells(1,2).Value = textboxDate.value
,
écrire
Worksheets(1).Cells(1,2).Value = CDate(textboxDate.value)
;
5• dans le doute prévois un gestionnaire d'erreur ;
6• n'utilises jamais .Select, évites d'utiliser les objets actifs : Selection, Activecell, Activesheet, ... (sauf, très très rarement, lorsque c'est absolument indispensable) ;
7• évites les références implicites(i.e. partielles), privilégies les références explicites (i.e. suffisamment complètes),
--- par exemple, au lieu de
= Cells(1,2)
écrire
= Worksheets(1).Cells(1,2).Value
,
donc, précises toujours la feuille pour un objet Range (Cells, Rows, ...) et la propriété cible (Value, Text, ...)
8• n'hésites pas à utiliser des variables pour représenter les objets, ça facilite l'écriture et la lecture du code,
--- par exemple :
Set MaPlage = Me.Range("B2:C8")
;
9• pour les mêmes raisons, n'hésites pas à utiliser aussi
With
et
End With
;
10• évites d'utiliser des propriétés ou méthodes d'objet héritées qui pourraient ne pas exister,
--- par exemple, au lieu de :
Sheets(1).Range("A1")
écrire
Workheets(1).Range("A1")
,
en effet l'objet Range n'appartient pas à Sheet mais à Worksheet ;
11• évites d'utiliser le Presse-Papier de Windows, préfères la copie directe avec une destination :
Source.Copy Destination
ou, pour copier que les valeurs :
Destination.valeur = Source.Valeur
.
12• commentes le code, penses à celui (peut-être toi) qui devra le déboguer dans deux ou trois ans !
13• respectes certaines règles de nommage des variables, notamment l'emploi d'un préfixe : le code est plus lisible par tous. Voir ici : https://argyronet.developpez.com/office/vba/convention/
14• n'écris pas de procédures fleuves (très longues), scindes les en différentes procédures élémentaires : là encore le code sera plus lisible.
15• libéres la mémoire dès que possible, en particulier pour les tableaux et les objets.


Tu trouveras ici un excellent cours VBA gratuit pour débutants (et plus si affinités ...),
même si, pour simplifier les explications, il n'applique pas toujours les conseils précédents :
ftp://ftp-developpez.com/bidou/Cours/VBA/formationVBA.pdf

Et le premier d'une série de 5 cours gratuits très complets pour apprendre par la pratique :
https://laurent-ott.developpez.com/tutoriels/programmation-excel-vba-tome-1/

Et très utile, le site de Jacques Boigontier, sur lequel on trouve une multitude d'exemples :
http://boisgontierjacques.free.fr/index2.htm