Application.Union

PAD

XLDnaute Occasionnel
Bonjour à tout le forum,

Désolé de vous harceler de la sorte, mais je ne m’en sort pas,

Je vous laisse le fil d’origine, c’est mieux.

Lien supprimé


Merci à vous et bon appétit


A+ PAD
 

Gorfael

XLDnaute Barbatruc
Salut
j'ai pas tout compris !
Plages c'est quoi ? un nombre, ou un ensemble de cellules ?
.Cells(dl1, 4 & plages) C'est supposé se référer à quoi ?
A+

PS : Pourquoi tu changes de fil ? Si c'est une autre question, laquelle ? Si c'est la suite... Tu ne veux plus de réponse de la part d'Hervé ?

Message édité par: Gorfael, à: 21/04/2006 13:11
 

PAD

XLDnaute Occasionnel
Salut Gorfael,

Le lien est seulement fait pour suivre le travail REMARQUABLE d'Hervé,
parce ce qu'il y a également un fichier joint, qui est le même si je le remet un içi,
et c'est aussi dans l'espoir que Hervé puisse m'expliquer ce code,
Hervé ou un VBA_rtist(e) pouvant le faire.

Plages est l'ensemble des 'plage' dans mon espece de bout de code...

Voilà, je pense ne rien avoir oublié ;)


Bye PAD
 

Gorfael

XLDnaute Barbatruc
PAD écrit:
Plages est l'ensemble des 'plage' dans mon espece de bout de code...
Salut
J'ai juste jeté un oeil, et ça m'a frappé (aïe).

.Cells(dl1, 4 & plages) : la propriété Cells est utilisable avec des nombres, et là, c'est du texte : 4 & plages
C'est pour ça qu'hervé te demande ce que tu veux faire

je lance userform2 : plantage avec ligne incriminée :
dl1 = Sheets(nomfeuille1).Range(65536).End(xlUp).Row + 1
Range ne peut pas s'utiliser avec seulement la référence de ligne, il lui faut une colonne

À priori, ton problème est la définition de plage. Pour ce genre de soucis, je me crée une macro que j'utilise avec F8 + affichage variables locales et je lance la macro directement dans VBE pour un exemple simple, pour tester union, voilà ma macro de test :
Sub Test_Macro()
Dim Str_Test As String
Dim Rg As Range

Set Rg = Union(Range('A1'), Range('B2'))
Str_Test = Rg.Address
End Sub
Il te reste qu'à tester la manière dont tu sélectionnes tes plages et tant que ta macro n'arrive pas sur End Sub sans erreur, c'est que tu n'as pas le bon code
De plus, en regardant la valeur de Str_Test, tu peux vérifier la conformité de la plage sélectionnée (c'est en absolu, mais comme c'est pas l'adresse que je teste, mais la méthode, je n'ai pas trouvé le besoin de modifier le code.
A+

Message édité par: Gorfael, à: 21/04/2006 14:06
 

PAD

XLDnaute Occasionnel
Re,

Je viens de faire un teste comme tu me l'a dit,
donc dans la fenètre de variables locales,
les plages sont marquées comme Valeur vide

Code:
Private ong As Worksheet
Dim entete As Byte

Private Sub Ajout_Click()
Dim premlign As Long
Dim nomfeuille1 As String
Dim colonne1a As String
Dim dl1 As Long

nomfeuille1 = 'Devis'
colonne1a = 'C'
premlign = 21 'première ligne

'***********************************************************************
' J'ai changé ICI de cette façon PAD
 
Set plages = Union(Range('C21:K61'), Range('C77:K132'), _
                   Range('C148:K203'), Range('C219:K274'), _
                   Range('C290:K345'), Range('C361:K400'))
           plages.Select
           
'************************************************************************
 
'recherche de la 1ére ligne
'içi la ligne bug, je ne comprends pas pourquoi
dl1 = Sheets('nomfeuille1').Range(colonne1a & 65536).End(xlUp).Row + 1


    With Sheets('Devis') 'on ajoute dans devis
        'Code=3 ! Désignation=4 ! U=8 ! Q=8 ! P.U.=10 ! Montant H.T.=11
        If entete = 0 Then          'on affiche le texte de l'ouvrage
            .Cells(dl1, 4) = List1
            dl1 = dl1 + 1
            entete = 1
        End If
    .Cells(dl1, 3) = Ca          'Label de USF
    .Cells(dl1, 4) = List2       'Listbox de USF
    .Cells(dl1, 8) = Unit        'Label de USF
    .Cells(dl1, 9) = Q           'Textbox de USF
    .Cells(dl1, 10) = Pu         'Label de USF
    .Cells(dl1, 11) = CDbl(PHT)  'Label de USF
     dl1 = dl1 + 1

End With
    Ca = ''
    Pu = ''
    Unit = ''
    MoU = ''
    Q = ''
    PHT = ''
 
End Sub

Si tu pouvais m'expliquer, pourquoi

Merci,

PAD

Message édité par: PAD, à: 21/04/2006 15:01
 

PAD

XLDnaute Occasionnel
Re Gorfael,

Ta macro marche bien, je l'ai modifier avec mes plages et elles sont toutes déctetées sans problème,
Mais une petite question,

La déclaration
Code:
Dim Str_Test As String
Str-Test c'est quoi au juste?

A+ PAD
 

Gorfael

XLDnaute Barbatruc
PAD écrit:
Re Gorfael,

Ta macro marche bien, je l'ai modifier avec mes plages et elles sont toutes déctetées sans problème,
Mais une petite question,

La déclaration
Code:
Dim Str_Test As String
Str-Test c'est quoi au juste?

A+ PAD
Salut
Dim Str_Test as string
Str_Test est le nom de ma variable chaine/texte (string)

Quand tu travailles avec une ou deux variables, tu peux les appeler toto ou X ou Y
Quand tu as une vingtaine de variables, il faut leur donner un nom explicite. Donc, j'essaies de respecter quelques règles
3 Premières lettres : le type de variable (Str=String, Dbl=double, lng=long.
Je sais qu'il ne faut pas utiliser le underscore (_) parce que sur gros système ça remplace une chaîne (comme * pour windows), mais comme moi, j'officie sur windows, je trouve ça plus lisible.
ça vient surtout d'accès : mes tables commencent par T- les Requêtes Par R- les formulaires par F-, comme ça j'utilises le même nom pour la table, la requête liée à la table et le formulaire.

Dès que tu fais de la programmation, il faut structurer ton code de manière à ce que si tu reviens dessus 6 mois plus tard, tu passes pas 2 jours, juste pour comprendre ce que tu as fait. Et, plus par habitude que par nécessité, mais on ne se refait pas, j'utilise la taille de variable la plus adaptée.
A+
 

Statistiques des forums

Discussions
312 322
Messages
2 087 270
Membres
103 503
dernier inscrit
maison