J'aimerais d=E9clarer une variable tableau dynamique dans une feuille
excel (exemple Feuil 2 Colonne A Ligne 1 =E0 xxx )
Les =E9l=E9ments enregistr=E9es dans lea feuille serviront de crit=E8re lors=
de la copie des donn=E9es
Mon probl=E8me doit certianement provenir de l'attribution Compte...
Sub xxxx()
Sheets("Feuil2").Select
Dim Compte() As String
Compte =3D Range([A1], [A1].End(xlDown))
ReDim Preserve Compte(100)
For Each d In Selection.Rows
ligne =3D d.Row
If d.Cells(1, 15).Value < M + 1 And
d.Cells(1, 3).Value =3D 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 =3D .Row + .Rows.Count - 1
End With
Application.ScreenUpdating =3D True
For r =3D derli To 1 Step -1
If Application.CountA(Rows(r)) =3D 0 Then Rows(r).Delete
Next r
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
a écrit dans le message de 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)
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()
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
<dracbi@hotmail.fr> a écrit dans le message de
news:4f96871a-4250-49e1-8333-60c3b0261e06@a1g2000hsb.googlegroups.com...
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)
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
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
a écrit dans le message de 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)
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
On 4 mai, 18:50, "Jacques ALARDET" wrote:
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
On 4 mai, 18:50, "Jacques ALARDET" <jacques.alar...@free.fr> wrote:
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.
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
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
a écrit dans le message de news: On 4 mai, 18:50, "Jacques ALARDET" wrote:
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
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
<dracbi@hotmail.fr> a écrit dans le message de
news:b7ae9fb0-bb65-4618-bc99-3d716634be32@34g2000hsh.googlegroups.com...
On 4 mai, 18:50, "Jacques ALARDET" <jacques.alar...@free.fr> wrote:
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.
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
a écrit dans le message de news: On 4 mai, 18:50, "Jacques ALARDET" wrote:
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
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
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
'***********
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
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
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
'***********
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
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
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.
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
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
On 6 mai, 00:35, dra...@hotmail.fr 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 -
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
Sheets("Feuil2").Select Dim Compte() As String ReDim Preserve Compte(15) For L = 1 To UBound(Compte) Compte(L) = Cells(L, 1).Value
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 ^^
Sheets("Feuil2").Select
Dim Compte() As String
ReDim Preserve Compte(15)
For L = 1 To UBound(Compte)
Compte(L) = Cells(L, 1).Value
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 ^^
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 ^^