Variable tableau + code

Le
dracbi
Bonjour,

Voila mon problème :

J'aimerais déclarer une variable tableau dynamique dans une feuille
excel (exemple Feuil 2 Colonne A Ligne 1 à xxx )
Les éléments enregistrées dans lea feuille serviront de critère lors=

de la copie des données
Mon problème doit certianement provenir de l'attribution Compte


Sub xxxx()

Sheets("Feuil2").Select
Dim Compte() As String
Compte = Range([A1], [A1].End(xlDown))
ReDim Preserve Compte(100)

Sheets("Feuil1").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range(Selection, Cells(1)).Select

For Each d In Selection.Rows
ligne = d.Row
If d.Cells(1, 15).Value < M + 1 And
d.Cells(1, 3).Value = Compte Then
d.Copy
Sheets("CG-Global").Select
Cells(ligne, 1).Select
Selection.PasteSpecial
End If
Next d

Sheets("CG-Global").Activate

With ActiveSheet.UsedRange
derli = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = True
For r = derli To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r

End Sub()
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacques ALARDET
Le #6551211
Bonjour,

J'ai trouvé une 'incompatbilité du type entre la variable (Dim Compte() As
String) et son utilisation (d.Cells(1, 3).Value = Compte Then)

C'est ton problème ?

Il attend un indice au tableau dans le 2ème cas, par exemple compte(?)

J a c q u e s

news:
Bonjour,

Voila mon problème :

J'aimerais déclarer une variable tableau dynamique dans une feuille
excel (exemple Feuil 2 Colonne A Ligne 1 à xxx )
Les éléments enregistrées dans lea feuille serviront de critère lors
de la copie des données
Mon problème doit certianement provenir de l'attribution Compte...


Sub xxxx()

Sheets("Feuil2").Select
Dim Compte() As String
Compte = Range([A1], [A1].End(xlDown))
ReDim Preserve Compte(100)

Sheets("Feuil1").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range(Selection, Cells(1)).Select

For Each d In Selection.Rows
ligne = d.Row
If d.Cells(1, 15).Value < M + 1 And
d.Cells(1, 3).Value = Compte Then
d.Copy
Sheets("CG-Global").Select
Cells(ligne, 1).Select
Selection.PasteSpecial
End If
Next d

Sheets("CG-Global").Activate

With ActiveSheet.UsedRange
derli = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = True
For r = derli To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r

End Sub()
dracbi
Le #6551191
On 4 mai, 18:50, "Jacques ALARDET"
Bonjour,

J'ai trouvé une 'incompatbilité du type entre la variable (Dim Compte( ) As
String) et son utilisation (d.Cells(1, 3).Value = Compte Then)

C'est ton problème ?

Il attend un indice au tableau dans le 2ème cas, par exemple compte(?)

J a c q u e s



merci pour ta réponse si rapide Jacques

Mon problème est bien la mais comment faire ?

J'aimerais que l'ensemble des infos de la variable "Compte" soit pris
en compte pour la copie des lignes.

Variable Compte=
611
613
624
706
707...

Cordialement

Jacques ALARDET
Le #6551891
Bonjour,

Pour charger les données dans le tableau, habituellement je fais comme cela
:

Sheets("Feuil2").Select
ReDim Compte(100)
For L = 1 To UBound(Compte)
Compte(L) = Cells(L, 1).Value
Next

au lieu de :
Compte = Range([A1], [A1].End(xlDown))
ReDim Preserve Compte(100)


J a c q u e s

news:
On 4 mai, 18:50, "Jacques ALARDET"
Bonjour,

J'ai trouvé une 'incompatbilité du type entre la variable (Dim Compte() As
String) et son utilisation (d.Cells(1, 3).Value = Compte Then)

C'est ton problème ?

Il attend un indice au tableau dans le 2ème cas, par exemple compte(?)

J a c q u e s



merci pour ta réponse si rapide Jacques

Mon problème est bien la mais comment faire ?

J'aimerais que l'ensemble des infos de la variable "Compte" soit pris
en compte pour la copie des lignes.

Variable Compte 611
613
624
706
707...

Cordialement

PMO
Le #6556681
Bonjour,

Au lieu de :
Dim Compte() As String
Compte = Range([A1], [A1].End(xlDown))

utilisez
Dim Compte As Variant
Compte = Range([A1], [A1].End(xlDown))

Ci-dessous un exemple de code
'***********
Sub pmo()
Dim Compte As Variant
Dim i&
Dim j&
Compte = Range([A1], [A1].End(xlDown))
For i& = 1 To UBound(Compte, 1)
For j& = 1 To UBound(Compte, 2)
Debug.Print Compte(i&, j&)
Next j&
Next i&
End Sub
'***********

Cordialement.

PMO
Patrick Morange
dracbi
Le #6559951
On 5 mai, 17:00, PMO <patrickPOINTmorangeAROBASElapostePOINTnet>
wrote:
Bonjour,

Au lieu de :
Dim Compte() As String
Compte = Range([A1], [A1].End(xlDown))

utilisez
Dim Compte As Variant
Compte = Range([A1], [A1].End(xlDown))

Ci-dessous un exemple de code
'***********
Sub pmo()
Dim Compte As Variant
Dim i&
Dim j&
Compte = Range([A1], [A1].End(xlDown))
For i& = 1 To UBound(Compte, 1)
  For j& = 1 To UBound(Compte, 2)
    Debug.Print Compte(i&, j&)
  Next j&
Next i&
End Sub
'***********

Cordialement.

PMO
Patrick Morange


dracbi
Le #6560091
On 5 mai, 17:00, PMO <patrickPOINTmorangeAROBASElapostePOINTnet>
wrote:
Bonjour,

Au lieu de :
Dim Compte() As String
Compte = Range([A1], [A1].End(xlDown))

utilisez
Dim Compte As Variant
Compte = Range([A1], [A1].End(xlDown))

Ci-dessous un exemple de code
'***********
Sub pmo()
Dim Compte As Variant
Dim i&
Dim j&
Compte = Range([A1], [A1].End(xlDown))
For i& = 1 To UBound(Compte, 1)
  For j& = 1 To UBound(Compte, 2)
    Debug.Print Compte(i&, j&)
  Next j&
Next i&
End Sub
'***********

Cordialement.

PMO
Patrick Morange


Tout d'abord je vous remercie pour votre aide. Je tiens à préciser que
je suis novice en vba, soyez donc indulgent. ^^
Rien à faire ca ne fonctionne pas.

Je vais donc tenter d'expliquer ce que je souhaite faire.

Dans une feuille ici "Feuil2" j'aimerais déclarer des paramètres
( variable tableau = Compte)
Dans une seconde feuille "Feuil1" j'ai des données figées sur les
colonnes mais pas sur les lignes.

J'aimerais sélectionner dans la Feuil1 les données correspondantes à
la variable tableau.
Ensuite je désire copier ses données dans une troisieme feuille appelé
ici CG-Global

Mon problème est sur cette ligne :

If d.Cells(1, 3).Value = Sheets("Feuil2").Cells(L, 1).Value Then
et si je remplace Sheets("Feuil2")... par :

If d.cells(1,3).value = Compte(N)

Un message apparait lors de l'execution :
"Qualificateur incorrect"


Sub bibi()

Sheets("Feuil2").Select 'Sélection
de la feuille contenant les parametres
Dim Compte() As String 'Déclaration
de ma variable tableau
ReDim Preserve Compte(50) 'Dimension du
tableau
For L = 1 To UBound(Compte)
Compte(L) = Cells(L, 1).Value
Next


Sheets("Feuil1").Select 'Sélection
de la feuille 1
ActiveCell.SpecialCells(xlLastCell).Select 'Attribution de la
plage à la variable d
Range(Selection, Cells(1)).Select

For Each d In Selection.Rows 'Boucle sur
toutes les lignes de la plage "d"
ligne = d.Row
If d.Cells(1, 3).Value = Sheets("Feuil2").Cells(L, 1).Value Then

d.Copy
Sheets("CG-Global").Select
Cells(ligne, 1).Select
Selection.PasteSpecial
End If
Next d

Sheets("CG-Global").Activate

With ActiveSheet.UsedRange
derli = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = True
For r = derli To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r

Msgbox "Traitement terminé"
End sub ()



Merci par avnce pour toute l'aide qui sera apportée.

Cordialement

Benjamin

dracbi
Le #6560081
On 6 mai, 00:35, wrote:
On 5 mai, 17:00, PMO <patrickPOINTmorangeAROBASElapostePOINTnet>
wrote:





Bonjour,

Au lieu de :
Dim Compte() As String
Compte = Range([A1], [A1].End(xlDown))

utilisez
Dim Compte As Variant
Compte = Range([A1], [A1].End(xlDown))

Ci-dessous un exemple de code
'***********
Sub pmo()
Dim Compte As Variant
Dim i&
Dim j&
Compte = Range([A1], [A1].End(xlDown))
For i& = 1 To UBound(Compte, 1)
  For j& = 1 To UBound(Compte, 2)
    Debug.Print Compte(i&, j&)
  Next j&
Next i&
End Sub
'***********

Cordialement.

PMO
Patrick Morange


Tout d'abord je vous remercie pour votre aide. Je tiens à préciser que
je suis novice en vba, soyez donc indulgent. ^^
Rien à faire ca ne fonctionne pas.

Je vais donc tenter d'expliquer ce que je souhaite faire.

Dans une feuille ici "Feuil2" j'aimerais déclarer des paramètres
( variable tableau = Compte)
Dans une seconde feuille "Feuil1" j'ai des données figées sur les
colonnes mais pas sur les lignes.

J'aimerais sélectionner dans la Feuil1 les données correspondantes à
la variable tableau.
Ensuite je désire copier ses données dans une troisieme feuille appel é
ici CG-Global

Mon problème est sur cette ligne :

If d.Cells(1, 3).Value = Sheets("Feuil2").Cells(L, 1).Value Then
 et si je remplace Sheets("Feuil2")... par :

If d.cells(1,3).value = Compte(N)

Un message apparait lors de l'execution :
"Qualificateur incorrect"

Sub bibi()

Sheets("Feuil2").Select                                    'Sélection
de la feuille contenant les parametres
Dim Compte() As String                                   'Déclaration
de ma variable tableau
ReDim Preserve Compte(50)                             'Dimension du
tableau
For L = 1 To UBound(Compte)
Compte(L) = Cells(L, 1).Value
Next

Sheets("Feuil1").Select                                    'Sélection
de la feuille 1
ActiveCell.SpecialCells(xlLastCell).Select          'Attribution de la
plage à la variable d
Range(Selection, Cells(1)).Select

For Each d In Selection.Rows                           'Boucle sur
toutes les lignes de la plage "d"
ligne = d.Row
If d.Cells(1, 3).Value = Sheets("Feuil2").Cells(L, 1).Value Then

d.Copy
Sheets("CG-Global").Select
Cells(ligne, 1).Select
                            Selection.PasteSpe cial
                            End If
                            Next d

    Sheets("CG-Global").Activate

        With ActiveSheet.UsedRange
        derli = .Row + .Rows.Count - 1
        End With
Application.ScreenUpdating = True
For r = derli To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r

Msgbox "Traitement terminé"
End sub ()

Merci par avnce pour toute l'aide qui sera apportée.

Cordialement

Benjamin- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


ok s


dracbi
Le #6560071
Sheets("Feuil2").Select
Dim Compte() As String
ReDim Preserve Compte(15)
For L = 1 To UBound(Compte)
Compte(L) = Cells(L, 1).Value

Sheets("Feuil1").Select
ActiveCell.SpecialCells(xlLastCell).Select
Range(Selection, Cells(1)).Select

For Each d In Selection.Rows
ligne = d.Row
If d.Cells(1, 3).Value = Sheets("Feuil2").Cells(L, 1).Value Then
d.Copy
Sheets("CG-Global").Select
Cells(ligne, 1).Select
Selection.PasteSpecial
End If
Next d

Sheets("CG-Global").Activate

With ActiveSheet.UsedRange
derli = .Row + .Rows.Count - 1
End With
Application.ScreenUpdating = True
For r = derli To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r

Next

Sa fonctionne de cette façon... le "next" était mal placé.

Pour les prochains éventuellement voici un lien interessant:
http://silkyroad.developpez.com/vba/tableaux/


Merci Jacques et PMO pour votre aide et sasn doute à bientôt ^^
Publicité
Poster une réponse
Anonyme