Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA qu'est-ce qui cloche dans mon code

  • Initiateur de la discussion Initiateur de la discussion Arpette
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Arpette

XLDnaute Impliqué
ReBonsoir à tous, je n'arrive pas à trouver qu'est-ce qu'il ne va pas dans mon code:
Voilà je veux concaténer en colonne B, les valeurs des cellules A avec maVleur que je trouve en M. Je ne sais pas si on peut employer 2 fois derligne.

Merci pour votre aide.

Code:
derligne = Range("A65536").End(xlUp).Row
For i = 2 To derligne
derligne = Range("M65536").End(xlUp).Row
    For j = 2 To derligne
    maValeur = Format(Range("M" & i).Value, "000")
    Cells(i, 2).Value = Cells(i, 1).Value & "-" & maValeur.Value
    Next j
Next i
 
Re : VBA qu'est-ce qui cloche dans mon code

Bonjour,

En effet, il se peut que les 2 derligne soient différents, ce qui peut amener des résultats inattendus. Pour éviter cela, pquoi ne pas utiliser 2 variables différentes ou si tu ne les utilises pas ailleurs, que tu n'écris pas plutôt :

VB:
For i = 2 To Range("A65536").End(xlUp).Row 
    For j = 2 To Range("M65536").End(xlUp).Row 
        maValeur = Format(Range("M" & i).Value, "000")
        Cells(i, 2).Value = Cells(i, 1).Value & "-" & maValeur.Value
    Next j
Next i
 
Re : VBA qu'est-ce qui cloche dans mon code


Bonsoir Softmama, merci pour ta réponse, mais j'ai toujours une erreur 424 "objet requis" au moment de la concaténation.
Merci encore
@+
 
Re : VBA qu'est-ce qui cloche dans mon code

Dans

Cells(i, 2).Value = Cells(i, 1).Value & "-" & maValeur.Value
Je pense que maValeur.Value c'est pas bon... essaie

Cells(i, 2).Value = Cells(i, 1).Value & "-" & maValeur

Mais bien sur Softmama, çà marche beaucoup mieux. Il me reste juste le problème de boucler, c'est à dire une fois que j'ai renseigné B2, il faut descendre en B3, B4 etc..Je reste sur B2.
Merci ton aide.
@+
 
Re : VBA qu'est-ce qui cloche dans mon code

re,

Heu tu me dis que ce code s'arrête en [B2] ? Mais en y regardant de plus prêt, je me demande carrément à quoi sert la boucle sur j ? Pque tu ne l'utilises pas après... Peux-tu peut-être ou m'expliquer exactement ce que doit faire ton code, ou mieux, joindre un bout de fichier que j'y vois clair 🙂
Je suppose que tu dois utiliser le j comme ceci :

For i = 2 To Range("A65536").End(xlUp).Row
For j = 2 To Range("M65536").End(xlUp).Row
maValeur = Format(Range("M" & j).Value, "000")
Cells(i, 2).Value = Cells(i, 1).Value & "-" & maValeur
Next j
Next i

Par ailleurs, si tu restes bloqué sur B2, c'est pque tu fais un test sur la dernière cellule de la colonne A. Donc si tu n'as pas de valeur en colonne A, tu iras pas loin avec cette macro.
 
Re : VBA qu'est-ce qui cloche dans mon code

Bonjour,

sans doute rien compris, car je ne vois aucun intêret à la 2ème boucle... il est vrai qu'avec un petit fichier avec modèle de donnée et résultat attendu, nous gagnerions du temps...

bonne journée
@+
 
Re : VBA qu'est-ce qui cloche dans mon code

Bonjour,

sans doute rien compris, car je ne vois aucun intêret à la 2ème boucle... il est vrai qu'avec un petit fichier avec modèle de donnée et résultat attendu, nous gagnerions du temps...

bonne journée
@+
Bonjour Pierrot, Softmama, voici un fichier qui résume ce que je souhaite. J'insère une colonne B dans laquelle je concatène les cellules A avec les cellule F séparées par un -. Il faut que les cellules F soient converties sur 3 digits.
Merci de votre aide.
 

Pièces jointes

Re : VBA qu'est-ce qui cloche dans mon code

Bonjour Arpette, Pierrot 93,

Ce code fait ce que tu souhaites :

VB:
Sub SoftMaMacro()
Dim c As Range
    Columns(2).Insert
    Set c = [B2]
    Do While c.Offset(0, -1) <> ""
        c = c(1, 0) & "-" & Format(c(1, 5), "000")
        Set c = c.Offset(1, 0)
    Loop
End Sub
 
Re : VBA qu'est-ce qui cloche dans mon code

Bonjour Softmama, merci c'est simple et nickel.
@+

Bonjour Softmama, j'ai encore besoin de ton aide, je saihaiterais faire la même chose sur une autre feuille de mon fichier mais ça agit sur la première.
merci de ton aide.

Code:
With Sheets("5-17")
Dim li As Integer
For li = Range("E65536").End(xlUp).Row To 2 Step -1
If InStr(Range("E" & li), "M") = 0 Then Rows(l).Delete
Next li

Set r = [F2]
    Do While c.Offset(0, -1) <> ""
        r = r(1, 0) & "-" & Format(r(1, 3), "000")
        Set r = r.Offset(1, 0)
    Loop
End With
 
Re : VBA qu'est-ce qui cloche dans mon code

Bonjour,

Tu utilises un bloc "with", dans ce cas les instructions dont tu veux qu'elles se réfèrent à ce dernier doivent être précédées d'un point :
Code:
For li = [B][COLOR="Red"][SIZE="5"].[/SIZE][/COLOR][/B]Range("E65536").End(xlUp).Row To 2 Step -1

bon après midi
@+
 
Re : VBA qu'est-ce qui cloche dans mon code

Bonjour,

comme Pierrot l'a dit, ça donne :

VB:
With Sheets("5-17")
Dim li As Integer
For li = .Range("E65536").End(xlUp).Row To 2 Step -1
If InStr(.Range("E" & li), "M") = 0 Then .Rows(li).Delete
Next li

Set r = .Range("F2")
    Do While c.Offset(0, -1) <> ""
        r = r(1, 0) & "-" & Format(r(1, 3), "000")
        Set r = r.Offset(1, 0)
    Loop
End With
 
Re : VBA qu'est-ce qui cloche dans mon code

Bonsoir à tous les deux, merci c'est parfait, j'ai juste remplacé c.Offset par r.Offset.
Merci encore et à bientôt
 
Re : VBA qu'est-ce qui cloche dans mon code

Bonsoir à tous les deux, merci c'est parfait, j'ai juste remplacé c.Offset par r.Offset.
Merci encore et à bientôt

Rebonsoir, je vais me faire disputer car on m'a dit que ce n'était pas possible, mais bon ??
Pour l'instant tout fonctionne bien, dans la colonne B de la feuille1 j'ai ma valeur concaténée (x), dans la colonne F de ma feuille2 j'ai ma valeur concaténée (x).
On retrouve dans la feuille1 en B toutes les les valeurs de la feuille2 qui se trouvent en F.
Où çà se complique, c'est que je souhaite faire une recherchev de ma feuille1 colonne B(x unique) vers ma feuille 2 colonne F(x pas unique) et renvoyer en feuille1 colonne C la somme des valeurs trouvées sur feuille 2 colonne G.
Mon problème est qu'à chaque fois que je trouve x de feuille1 dans feuille2, je ne fais pas la somme de x feuille 2 vers x feuille1 mais juste la première valeur trouvée).
Merci de votre aide.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
15
Affichages
778
Réponses
5
Affichages
908
Réponses
4
Affichages
730
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
903
Réponses
8
Affichages
390
Réponses
10
Affichages
661
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…