Utilisation de "&" dans VBA

Bonjour à tous,

Petite question de débutant, cette ligne de code fonctionne :

For ctr = 1 To 4
       Cells(ctr, 8) = Chr(61) & Cells(ctr, 5).Address
       Next

Alors que celle-ci ne fonctionne pas :

For ctr = 1 To 4
       Cells(ctr, 8) = Chr(61) & Cells(ctr, 5).Address & Chr(34)
       Next

Quelqu'un pourrait m'expliquer pourquoi ? Je ne peux pas utiliser 2 fois le "&" ?

Bonjour,

Je ne sais pas bien ce que tu cherches à faire, mais essaie d'écrire toi-même dans une cellule =E1" et tu constateras que les guillemets vont toujours par paire

Bonjour tjenatjena, le forum,

je propose ce code VBA :

Option Explicit

Sub Essai()
  Dim ctr As Byte
  For ctr = 1 To 4
    Cells(ctr, 8) = """=" & Cells(ctr, 5).Address & """"
  Next ctr
End Sub

OU 2ème possibilité :

Option Explicit

Sub Essai()
  Dim ctr As Byte
  For ctr = 1 To 4
    Cells(ctr, 8).Formula = "=" & Cells(ctr, 5).Address
  Next ctr
End Sub

dhany

Bonjour tous les deux,

Je n'ai vraiment pas été clair, désolé.

Je ne savais pas que si l'on insérait une formule fausse dans excel par l'intermédiaire d'une macro, la macro ne fonctionne pas. Donc effectivement, mon exemple ne peut fonctionner avec un seul ".

Voila exactement la formule que je souhaite rentrer dans excel : =Ex & STXT(Gx; 8; 4)

(avec x le numéro de la ligne associée)

Pour l'instant, cela ressemble à ça :

 Dim ctr As Integer 
For ctr = 1 To 4
       Cells(ctr, 8) = "=" & Cells(ctr, 5).Address & " & STXT(" & Cells(ctr, 7).Address & "; 8; 4)"
       Next

J'ai essayé en enlevant tous les caractères spéciaux mais rien n'y fait..

Peut être une succession d'erreur d'étourderie de ma part..

J'essaie maintenant avec Cells(x,x).Formula et je reviens vers vous lorsque cela fonctionne.

Bonjour,

avec .Formula il faut la formule en anglais, avec le séparateur anglais ,

Tu as .FormulaLocal pour les mettre en français.

eric

Merci Eric !

.FormulaLocal fonctionne. Cela donne :

    For ctr = prelig To derlig
       Cells(ctr, 8).FormulaLocal = "=" & Cells(ctr, 5).Address & " & STXT(" & Cells(ctr, 6).Address & "; 8; 4)"
       Next
'=E & STXT(F; 1; 1)

Bonjour tjenatjena, le forum,

tu peux faire plus simple :

Option Explicit

Sub Essai()
  Dim prelig&, derlig&, ctr&
  For ctr = prelig To derlig
    Cells(ctr, 8).Formula = "=E" & ctr & " & STXT(F" & ctr & ",8,4)"
  Next ctr
End Sub

dhany

Edit : j'ai oublié d'mettre le nom de la fonction en anglais : c'est avec MID au lieu de STXT (sinon, y'a #NOM?) :

Option Explicit

Sub Essai()
  Dim prelig&, derlig&, ctr&
  For ctr = prelig To derlig
    Cells(ctr, 8).Formula = "=E" & ctr & " & MID(F" & ctr & ",8,4)"
  Next ctr
End Sub

dhany

Tu peux te passer de la boucle, gros gain de temps si beaucoup de ligne :

Cells(prelig, 8).Resize(derlig - prelig + 1).FormulaLocal = "=" & Cells(prelig, 5).Address(0) & " & STXT(" & Cells(prelig, 6).Address(0) & "; 8; 4)"

Merci à tous les deux pour ces info !

Tout fonctionne parfaitement !

@tjenatjena

merci pour ton retour ! bonne continuation !

dhany

Rechercher des sujets similaires à "utilisation vba"