Plage cellules de l'objet "Range (variable).select" sous forme de variable [Résolu]

Signaler
Messages postés
3
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
20 mars 2009
-
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Bonjour,

Voilà, je souhaite supprimer des colonnes dans un fichier .dbf selon une liste définie dans un fichier excel.
J'ai donc créé un fichier excel dans lequel j'ai repris les intitulés (champs) des colonnes et je coche dans ce fichier les colonnes du fichier .dbf à supprimer.
Ce fichier excel me donne le résultat dans la cellule "K4" sous forme  "B:D,F:F,I:T" (par exemple)
Mais lorsque j'ouvre le fichier .dbf dans excel, et que je demande à sélectionner les colonnes, j'ai un message d'erreur 1004 : erreur définie par l'application ou par l'objet.

Voici le code dans le fichier excel ( écrit dans le module 1)

Public Sub definition_col_a_suppr()
Dim listecol As String
listecol = """"


d = 1
c = 3


Do While c < 37
  If Worksheets("INIT").Range("C" & c).Value = "OUI" Then
      d = c
     Do While Worksheets("INIT").Range("C" & d).Value = "OUI"
       d = d + 1
     Loop
   listecol = listecol & Worksheets("INIT").Range("b" & c).Value & ":" & Worksheets("INIT").Range("b" & d - 1).Value & ","
  c = d
  Else
    c = c + 1
  End If
 
Loop
  


listecol = Left$(listecol, Len(listecol) - 1) & """"


Worksheets("INIT").Range("K4").Value = listecol



(rem: listecol me donne une chaîne du genre : "B:D,F:F,I:T" )
Workbooks.Open Filename:=Worksheets("INIT").Range("K2").Value & "ms01.dbf"


Windows("MS01.dbf").Activate


Worksheets("MS01").Range(listecol).Select   (C'EST ICI QUE CELA PLANTE ! )


Selection.Delete Shift:=xlToLeft


End Sub

Comment faire pour attribuer une variable sous forme de texte ( "B:D,F:F,I:T" par ex) à l'objet :   Range ( variable ).select ?

Merci pour votre aide

3 réponses

Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
52
salut,

Je pense que tu n'a pas besoin de mettre des " au début et à la fin.
Je ferais plutot

Public Sub definition_col_a_suppr()
Dim listecol As String

   d = 1
   C = 3
<strike>    </strike><strike>listecol = """"</strike>
   Do While C < 37
     If Worksheets("INIT").Range("C" & C).Value = "OUI" Then
         d = C
        Do While Worksheets("INIT").Range("C" & d).Value = "OUI"
          d = d + 1
        Loop
      listecol = listecol & Worksheets("INIT").Range("b" & C).Value & ":" & Worksheets("INIT").Range("b" & d - 1).Value & ","
     C = d
     Else
       C = C + 1
     End If
   
   Loop
 

   listecol = Left$(listecol, Len(listecol) - 1)<strike>& """"</strike>
   
   Worksheets("INIT").Range("K4").Value = listecol
   Workbooks.Open FileName:=Worksheets("INIT").Range("K2").Value & "ms01.dbf"
   Windows("MS01.dbf").Activate
   Worksheets("MS01").Range(listecol).Select
   Selection.Delete Shift:=xlToLeft

End Sub , ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
a voir si ton Excel (parametres regionnaux) n'attend pas plutot:

"B:D;F:F;I:T"
Messages postés
3
Date d'inscription
jeudi 10 avril 2008
Statut
Membre
Dernière intervention
20 mars 2009

Bonjour Renfield,

Non, c'est la première chose à laquelle j'ai regardé... Ce sont bien des "," qu'Excel attend.
J'ai essayé avec le texte en "clair" ( range ("B:D,F:F,I:T" ).select  ) au lieu d'une variable et cela fonctionne ( avec "," comme séparateur )...
 J'ai aussi essayé de mettre range ("listecol").select... mais c'est tjs le même résultat...
@+